3v4l.org

run code in 300+ PHP versions simultaneously
<?php if (!function_exists('json_encode')) { function json_encode($it) { $tmp = $it; if (!mb_convert_variables($tmp, 'UTF-8', 'UTF-8')) { return false; } if (!($assoc = is_object($it)) && !is_array($it)) { return _js_enc_value($it); } $i = 0; $it = (array)$it; if (!$assoc) { foreach ($it as $k => $v) { if ($k !== $i) { $assoc = true; break; } $i++; } } $data = array(); foreach ($it as $k => $v) { $v = _js_enc_value($v); if ($assoc) { $k = _js_enc_value($k); $data[] = $k . ':' . $v; } else { $data[] = $v; } } if ($assoc) { $bl = '{'; $br = '}'; } else { $bl = '['; $br = ']'; } return $bl . implode(',', $data) . $br; } function _js_enc_value($value) { switch (true) { case is_array($value): case is_object($value): return json_encode($value); case is_bool($value): return $value ? 'true' : 'false'; case $value === null: case is_resource($value) && _js_error(): return 'null'; case is_string($value): return _js_uc_esc($value); default: return $value; } } function _js_error() { return trigger_error( 'json_encode(): type is unsupported, encoded as null', E_USER_WARNING ); } function _js_uc_esc($value) { $pattern = "@[\x08-\x10\x0c\x0d\\\\\"/]|([^\x08-\x10\x0c\x0d\x32-\x7f\\\\\"/])++@"; return '"' . preg_replace_callback($pattern, '_js_uc_esc_cb', $value) . '"'; } function _js_uc_esc_cb($matches) { switch (true) { case isset($matches[1]): $char = mb_convert_encoding($matches[0], 'UTF-16', 'UTF-8'); $str = ''; $len = strlen($char); for ($i = 0; $i < $len; $i += 2) { $str .= sprintf('\\u%02x%02x', ord($char[$i]), ord($char[$i + 1]) ); } return $str; default: return addcslashes($matches[0], "\x08\x09\x10\x0c\x0d\\\"/"); } } } $str = ''; for ($i=0;$i<=300;$i++) { $str .= chr($i); } $str .= chr(127); var_dump(json_encode(array("test" => $str)));

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)
8.3.40.0100.00618.97
8.3.30.0070.00719.13
8.3.20.0030.01320.33
8.3.10.0040.00423.53
8.3.00.0070.00319.25
8.2.170.0090.00622.96
8.2.160.0070.00720.53
8.2.150.0080.00824.18
8.2.140.0030.00624.66
8.2.130.0030.01426.16
8.2.120.0000.00822.38
8.2.110.0060.00322.29
8.2.100.0100.00018.77
8.1.270.0040.00423.80
8.1.260.0040.00426.35
8.1.250.0040.00428.09
8.1.240.0080.00418.74
8.1.230.0070.00318.66
5.4.170.0190.04312.38
5.4.160.0190.04212.38
5.4.150.0110.04812.37
5.4.140.0160.04512.06
5.4.130.0220.05512.04
5.4.120.0180.04612.00
5.4.110.0180.04512.00
5.4.100.0170.04412.00
5.4.90.0140.04612.00
5.4.80.0280.08412.00
5.4.70.0220.05711.99
5.4.60.0170.04312.00
5.4.50.0150.04311.99
5.4.40.0180.04011.98
5.4.30.0170.04311.98
5.4.20.0190.03911.98
5.4.10.0210.06711.98
5.4.00.0120.04611.47
5.3.260.0230.05512.72
5.3.250.0280.06712.71
5.3.240.0160.04512.72
5.3.230.0190.04412.71
5.3.220.0150.04912.68
5.3.210.0160.04612.68
5.3.200.0190.05812.68
5.3.190.0160.04512.68
5.3.180.0260.06612.67
5.3.170.0160.04912.67
5.3.160.0180.04912.67
5.3.150.0200.04812.68
5.3.140.0180.05712.66
5.3.130.0170.04612.66
5.3.120.0150.04812.65
5.3.110.0160.04612.66
5.3.100.0270.05012.12
5.3.90.0150.04312.08
5.3.80.0220.05412.07
5.3.70.0140.04712.07
5.3.60.0190.04312.06
5.3.50.0180.04312.01
5.3.40.0160.04312.01
5.3.30.0160.04111.97
5.3.20.0230.06511.76
5.3.10.0190.03811.71
5.3.00.0150.04211.70

preferences:
33.71 ms | 400 KiB | 5 Q