@@ -533,14 +533,8 @@ public function plusEquals(...$args)
533533 for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
534534 $ validValues = true ;
535535 $ 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 );
544538 if ($ validValues ) {
545539 $ this ->A [$ i ][$ j ] += $ value ;
546540 } else {
@@ -633,14 +627,8 @@ public function minusEquals(...$args)
633627 for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
634628 $ validValues = true ;
635629 $ 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 );
644632 if ($ validValues ) {
645633 $ this ->A [$ i ][$ j ] -= $ value ;
646634 } else {
@@ -735,17 +723,8 @@ public function arrayTimesEquals(...$args)
735723 for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
736724 $ validValues = true ;
737725 $ 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 );
749728 if ($ validValues ) {
750729 $ this ->A [$ i ][$ j ] *= $ value ;
751730 } else {
@@ -796,14 +775,8 @@ public function arrayRightDivide(...$args)
796775 for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
797776 $ validValues = true ;
798777 $ 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 );
807780 if ($ validValues ) {
808781 if ($ value == 0 ) {
809782 // Trap for Divide by Zero error
@@ -1083,14 +1056,8 @@ public function power(...$args)
10831056 for ($ j = 0 ; $ j < $ this ->n ; ++$ j ) {
10841057 $ validValues = true ;
10851058 $ 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 );
10941061 if ($ validValues ) {
10951062 $ this ->A [$ i ][$ j ] = $ this ->A [$ i ][$ j ] ** $ value ;
10961063 } else {
@@ -1191,4 +1158,20 @@ public function det()
11911158
11921159 return $ L ->det ();
11931160 }
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+ }
11941177}
0 commit comments