3v4l.org

run code in 300+ PHP versions simultaneously
<?php $expression = "5+4^3^2^1"; if (!preg_match('~^-?\d*\.?\d+([*/+-^]-?\d*\.?\d+)*$~', $expression)) { echo "invalid expression"; } else { $components = preg_split('~(?<=\d)([*/+-^])~', $expression, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); var_export($components); // ['5','+','4','^','3','^','2','^','1'] while (($index = array_search('^', $components)) !== false) { array_splice($components, $index - 1, 3, pow($components[$index - 1], $components[$index + 1])); var_export($components); // ['5', '+', 64, '^', '2', '^', '1'] // ['5', '+' ,4096, '^', '1'] // ['5', '+', 4096] } while (($index = array_search('*', $components)) !== false) { array_splice($components, $index - 1, 3, $components[$index - 1] * $components[$index + 1]); var_export($components); } while (($index = array_search('/', $components)) !== false) { array_splice($components, $index - 1, 3, $components[$index - 1] / $components[$index + 1]); } while (($index = array_search('+', $components)) !== false) { array_splice($components, $index - 1, 3, $components[$index - 1] + $components[$index + 1]); // [4101] } while (($index = array_search('-', $components)) !== false) { array_splice($components, $index - 1, 3, $components[$index - 1] - $components[$index + 1]); } echo $components[0]; // 4101 }
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
array ( 0 => '5', 1 => '+', 2 => '4', 3 => '^', 4 => '3', 5 => '^', 6 => '2', 7 => '^', 8 => '1', )array ( 0 => '5', 1 => '+', 2 => 64, 3 => '^', 4 => '2', 5 => '^', 6 => '1', )array ( 0 => '5', 1 => '+', 2 => 4096, 3 => '^', 4 => '1', )array ( 0 => '5', 1 => '+', 2 => 4096, )4101
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 array ( 0 => '5', 1 => '+', 2 => '4', 3 => '^', 4 => '3', 5 => '^', 6 => '2', 7 => '^', 8 => '1', )array ( 0 => '5', 1 => '+', 2 => 64, 3 => '^', 4 => '2', 5 => '^', 6 => '1', )array ( 0 => '5', 1 => '+', 2 => 4096, 3 => '^', 4 => '1', )array ( 0 => '5', 1 => '+', 2 => 4096, )4101

preferences:
149.63 ms | 402 KiB | 157 Q