@@ -533,14 +533,8 @@ public function plusEquals(...$args)
533
533
for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
534
534
$ validValues = true ;
535
535
$ value = $ M ->get ($ i , $ j );
536
- if ((is_string ($ this ->A [$ i ][$ j ])) && (strlen ($ this ->A [$ i ][$ j ]) > 0 ) && (!is_numeric ($ this ->A [$ i ][$ j ]))) {
537
- $ this ->A [$ i ][$ j ] = trim ($ this ->A [$ i ][$ j ], '" ' );
538
- $ validValues &= StringHelper::convertToNumberIfFraction ($ this ->A [$ i ][$ j ]);
539
- }
540
- if ((is_string ($ value )) && (strlen ($ value ) > 0 ) && (!is_numeric ($ value ))) {
541
- $ value = trim ($ value , '" ' );
542
- $ validValues &= StringHelper::convertToNumberIfFraction ($ value );
543
- }
536
+ [$ this ->A [$ i ][$ j ], $ validValues ] = $ this ->validateExtractedValue ($ this ->A [$ i ][$ j ], $ validValues );
537
+ [$ value , $ validValues ] = $ this ->validateExtractedValue ($ value , $ validValues );
544
538
if ($ validValues ) {
545
539
$ this ->A [$ i ][$ j ] += $ value ;
546
540
} else {
@@ -633,14 +627,8 @@ public function minusEquals(...$args)
633
627
for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
634
628
$ validValues = true ;
635
629
$ value = $ M ->get ($ i , $ j );
636
- if ((is_string ($ this ->A [$ i ][$ j ])) && (strlen ($ this ->A [$ i ][$ j ]) > 0 ) && (!is_numeric ($ this ->A [$ i ][$ j ]))) {
637
- $ this ->A [$ i ][$ j ] = trim ($ this ->A [$ i ][$ j ], '" ' );
638
- $ validValues &= StringHelper::convertToNumberIfFraction ($ this ->A [$ i ][$ j ]);
639
- }
640
- if ((is_string ($ value )) && (strlen ($ value ) > 0 ) && (!is_numeric ($ value ))) {
641
- $ value = trim ($ value , '" ' );
642
- $ validValues &= StringHelper::convertToNumberIfFraction ($ value );
643
- }
630
+ [$ this ->A [$ i ][$ j ], $ validValues ] = $ this ->validateExtractedValue ($ this ->A [$ i ][$ j ], $ validValues );
631
+ [$ value , $ validValues ] = $ this ->validateExtractedValue ($ value , $ validValues );
644
632
if ($ validValues ) {
645
633
$ this ->A [$ i ][$ j ] -= $ value ;
646
634
} else {
@@ -735,17 +723,8 @@ public function arrayTimesEquals(...$args)
735
723
for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
736
724
$ validValues = true ;
737
725
$ value = $ M ->get ($ i , $ j );
738
- if ((is_string ($ this ->A [$ i ][$ j ])) && (strlen ($ this ->A [$ i ][$ j ]) > 0 ) && (!is_numeric ($ this ->A [$ i ][$ j ]))) {
739
- $ this ->A [$ i ][$ j ] = trim ($ this ->A [$ i ][$ j ], '" ' );
740
- $ validValues &= StringHelper::convertToNumberIfFraction ($ this ->A [$ i ][$ j ]);
741
- }
742
- if ((is_string ($ value )) && (strlen ($ value ) > 0 ) && (!is_numeric ($ value ))) {
743
- $ value = trim ($ value , '" ' );
744
- $ validValues &= StringHelper::convertToNumberIfFraction ($ value );
745
- }
746
- if (!is_numeric ($ value ) && is_array ($ value )) {
747
- $ value = Functions::flattenArray ($ value )[0 ];
748
- }
726
+ [$ this ->A [$ i ][$ j ], $ validValues ] = $ this ->validateExtractedValue ($ this ->A [$ i ][$ j ], $ validValues );
727
+ [$ value , $ validValues ] = $ this ->validateExtractedValue ($ value , $ validValues );
749
728
if ($ validValues ) {
750
729
$ this ->A [$ i ][$ j ] *= $ value ;
751
730
} else {
@@ -796,14 +775,8 @@ public function arrayRightDivide(...$args)
796
775
for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
797
776
$ validValues = true ;
798
777
$ value = $ M ->get ($ i , $ j );
799
- if ((is_string ($ this ->A [$ i ][$ j ])) && (strlen ($ this ->A [$ i ][$ j ]) > 0 ) && (!is_numeric ($ this ->A [$ i ][$ j ]))) {
800
- $ this ->A [$ i ][$ j ] = trim ($ this ->A [$ i ][$ j ], '" ' );
801
- $ validValues &= StringHelper::convertToNumberIfFraction ($ this ->A [$ i ][$ j ]);
802
- }
803
- if ((is_string ($ value )) && (strlen ($ value ) > 0 ) && (!is_numeric ($ value ))) {
804
- $ value = trim ($ value , '" ' );
805
- $ validValues &= StringHelper::convertToNumberIfFraction ($ value );
806
- }
778
+ [$ this ->A [$ i ][$ j ], $ validValues ] = $ this ->validateExtractedValue ($ this ->A [$ i ][$ j ], $ validValues );
779
+ [$ value , $ validValues ] = $ this ->validateExtractedValue ($ value , $ validValues );
807
780
if ($ validValues ) {
808
781
if ($ value == 0 ) {
809
782
// Trap for Divide by Zero error
@@ -1083,14 +1056,8 @@ public function power(...$args)
1083
1056
for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
1084
1057
$ validValues = true ;
1085
1058
$ value = $ M ->get ($ i , $ j );
1086
- if ((is_string ($ this ->A [$ i ][$ j ])) && (strlen ($ this ->A [$ i ][$ j ]) > 0 ) && (!is_numeric ($ this ->A [$ i ][$ j ]))) {
1087
- $ this ->A [$ i ][$ j ] = trim ($ this ->A [$ i ][$ j ], '" ' );
1088
- $ validValues &= StringHelper::convertToNumberIfFraction ($ this ->A [$ i ][$ j ]);
1089
- }
1090
- if ((is_string ($ value )) && (strlen ($ value ) > 0 ) && (!is_numeric ($ value ))) {
1091
- $ value = trim ($ value , '" ' );
1092
- $ validValues &= StringHelper::convertToNumberIfFraction ($ value );
1093
- }
1059
+ [$ this ->A [$ i ][$ j ], $ validValues ] = $ this ->validateExtractedValue ($ this ->A [$ i ][$ j ], $ validValues );
1060
+ [$ value , $ validValues ] = $ this ->validateExtractedValue ($ value , $ validValues );
1094
1061
if ($ validValues ) {
1095
1062
$ this ->A [$ i ][$ j ] = $ this ->A [$ i ][$ j ] ** $ value ;
1096
1063
} else {
@@ -1191,4 +1158,20 @@ public function det()
1191
1158
1192
1159
return $ L ->det ();
1193
1160
}
1161
+
1162
+ /**
1163
+ * @param mixed $value
1164
+ */
1165
+ private function validateExtractedValue ($ value , bool $ validValues ): array
1166
+ {
1167
+ if ((is_string ($ value )) && (strlen ($ value ) > 0 ) && (!is_numeric ($ value ))) {
1168
+ $ value = trim ($ value , '" ' );
1169
+ $ validValues &= StringHelper::convertToNumberIfFraction ($ value );
1170
+ }
1171
+ if (!is_numeric ($ value ) && is_array ($ value )) {
1172
+ $ value = Functions::flattenArray ($ value )[0 ];
1173
+ }
1174
+
1175
+ return [$ value , $ validValues ];
1176
+ }
1194
1177
}
0 commit comments