3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Польская нотация. Реализация алгоритма с рекурсией function polish_recursive($str) { // подчистить строку и разделить ее на "стек" $stack=explode(' ',trim(preg_replace('/[[:space:]]{2,}/',' ',$str))); $cnt=count($stack); // если в стеке более 1 элемента if ($cnt>1) { // debug //echo join(' ',$stack).'<br>'; // пройтись по стеку for ($i=0; $i<$cnt; $i++) { if (in_array($stack[$i], array('-', '+', '*', '/', '^'))) { if ($i<2) { return 'error'; } // выполнить операцию, записать в "стек" результат eval('$stack[$i]=$stack[($i-2)]'.$stack[$i].'$stack[($i-1)];'); // изъять из "стека" операнды unset($stack[($i-1)]); unset($stack[($i-2)]); break; } else { // не арифметический знак и не число if (!is_numeric($stack[$i])) { return 'error'; } } } // в стеке ничего не изменилось после выполнения цикла if ($cnt==count($stack)) { return 'error'; } // следующий рекурсивный проход $str=polish_recursive(join(' ',$stack)); } // результат return($str); } echo polish_recursive('(a+b)*c^d^e-f/(g+h/i)')

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.180.0060.03612.41
5.4.170.0160.04412.39
5.4.160.0140.04812.38
5.4.150.0170.04612.38
5.4.140.0210.03812.07
5.4.130.0210.07012.05
5.4.120.0200.03812.02
5.4.110.0210.03912.01
5.4.100.0190.04012.01
5.4.90.0210.04412.02
5.4.80.0190.04312.01
5.4.70.0190.04012.01
5.4.60.0150.04312.01
5.4.50.0150.04312.01
5.4.40.0160.04111.99
5.4.30.0200.04111.99
5.4.20.0190.03811.99
5.4.10.0170.04311.99
5.4.00.0270.06211.48
5.3.270.0180.04412.72
5.3.260.0150.05112.72
5.3.250.0270.06612.72
5.3.240.0110.05212.72
5.3.230.0170.04712.71
5.3.220.0230.03912.68
5.3.210.0100.05112.68
5.3.200.0160.04512.68
5.3.190.0160.04612.68
5.3.180.0130.04912.68
5.3.170.0340.08812.67
5.3.160.0190.04812.68
5.3.150.0210.04412.68
5.3.140.0150.04612.66
5.3.130.0170.04512.66
5.3.120.0210.04312.66
5.3.110.0180.04312.66
5.3.100.0190.04512.12
5.3.90.0310.09112.10
5.3.80.0150.04912.09
5.3.70.0260.06612.09
5.3.60.0210.04512.07
5.3.50.0130.05012.02
5.3.40.0200.04412.02
5.3.30.0300.06511.99
5.3.20.0150.04311.77
5.3.10.0190.04411.73
5.3.00.0150.04411.71

preferences:
136.73 ms | 1394 KiB | 7 Q