3v4l.org

run code in 300+ PHP versions simultaneously
<?php $allowed_operators = array("*", "/", "^", "+", "-"); $rpn = "3 4 5 * -"; $rpnlen = strlen($rpn) - 1; $stack = array(); function digit($char) { return ctype_digit((string)$char); } //set_time_limit(2); function r_old() { global $pos, $rpn, $rpnlen, $stack, $allowed_operators, $result; if($rpnlen <= $pos) return false; $pos++; if($rpn[$pos] != ' ') { $tmp = ""; if(digit($rpn[$pos])) { while(digit($rpn[$pos]) || $rpn[$pos] == ".") { $tmp .= $rpn[$pos]; $pos++; } $pos--; if (!empty($tmp)) array_push($stack, $tmp); } else if(in_array($rpn[$pos], $allowed_operators)) { $second = array_pop($stack); $first = array_pop($stack); if($rpn[$pos] == '^') $result = eval("return pow($first, $second);"); else $result = eval("return ($first $rpn[$pos] $second);"); array_push($stack, $result); return r_old(); } else { return r_old(); } } return r_old(); } $result = 0; $pos = 0; function r() { global $pos, $rpn, $rpnlen, $allowed_operators, $result, $stack; while($rpn[$pos] == ' ') $pos++; if($rpnlen <= $pos) return false; if(digit($rpn[$pos])) { $tmp = ""; do { $tmp .= $rpn[$pos]; $pos++; } while(digit($rpn[$pos]) || $rpn[$pos] == "."); array_push($stack, $tmp); } else if(in_array($rpn[$pos], $allowed_operators)) { $second = array_pop($stack); $first = array_pop($stack); if($rpn[$pos] == '^') $result = eval("return pow($first, $second);"); else $result = eval("return ($first $rpn[$pos] $second);"); //echo "return ($first $rpn[$pos] $second);"; array_push($stack, $result); } $pos++; return r(); } r(); //echo $result;
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.1 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 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.6
Output for 5.1.0
Fatal error: fatal flex scanner internal error--end of buffer missed in /in/4Iibk on line 85
Process exited with code 255.

preferences:
300.4 ms | 401 KiB | 460 Q