3v4l.org

run code in 500+ PHP versions simultaneously
<?php //define('ARRAY_FILTER_USE_VALUE', 0); echo ARRAY_FILTER_USE_VALUE, PHP_EOL; echo ARRAY_FILTER_USE_BOTH, PHP_EOL; echo ARRAY_FILTER_USE_KEY, PHP_EOL; $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]; echo '===== THESE ARE VALID AND CORRECT =====', PHP_EOL; echo '------ $mode is PHP constant -------------', PHP_EOL; var_dump(array_filter($arr, function($v) { return $v == 4; }, ARRAY_FILTER_USE_VALUE)); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4; }, ARRAY_FILTER_USE_BOTH)); var_dump(array_filter($arr, function($k) { return $k == 'b'; }, ARRAY_FILTER_USE_KEY)); echo '------ $mode is integer -------------', PHP_EOL; var_dump(array_filter($arr, function($v) { return $v == 4; }, 0)); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4; }, 1)); var_dump(array_filter($arr, function($k) { return $k == 'b'; }, 2)); echo '===== THE BEHAVIOUR HERE IS UNEXPECTED, I WOULD EXPECT A TYPEERROR =====', PHP_EOL; echo '------- $mode is text string ------------', PHP_EOL; var_dump(array_filter($arr, function($v) { return $v == 4; }, '0')); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4; }, '1')); var_dump(array_filter($arr, function($k) { return $k == 'b'; }, '2')); echo '------ $mode is float -------------', PHP_EOL; var_dump(array_filter($arr, function($v) { return $v == 4; }, 0.2)); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4; }, 1.3)); var_dump(array_filter($arr, function($k) { return $k == 'b'; }, 2.2)); echo '------ $mode is boolean -------------', PHP_EOL; var_dump(array_filter($arr, function($v) { return $v == 4; }, false)); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4; }, true)); /*var_dump(array_filter($arr, function($k) { return $k == 'b'; }, 2));*/ echo '===== WHEN ERRORS ARE ACTUALLY THROWN =====', PHP_EOL; echo '------ $mode is invalid value -------------', PHP_EOL; try { var_dump(array_filter($arr, function($v) { return $v == 4; }, 50)); } catch(Error $e) { echo $e->getMessage(), PHP_EOL; } echo '------ $mode is invalid value and invalid type -------------', PHP_EOL; try { var_dump(array_filter($arr, function($v) { return $v == 4; }, 'text')); } catch(Error $e) { echo $e->getMessage(), PHP_EOL; }

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.5.100.0110.00818.74
8.5.90.0140.00518.77
8.5.80.0090.00818.62
8.5.70.0100.00818.73
8.5.60.0080.00718.79
8.5.50.0090.00518.69
8.5.40.0070.00718.32
8.5.30.0100.00418.65
8.5.20.0120.00618.66
8.5.10.0100.00718.52
8.5.00.0060.00218.22
8.4.250.0040.00621.56
8.4.240.0100.01021.61
8.4.230.0130.00821.42
8.4.220.0150.00621.65
8.4.210.0140.00421.50
8.4.200.0090.00921.65
8.4.190.0120.01021.55
8.4.180.0150.00821.69
8.4.170.0140.00821.65
8.4.160.0120.00721.67
8.4.150.0120.01321.68
8.4.140.0140.00819.61
8.4.130.0090.01019.61
8.4.120.0080.00919.79
8.4.110.0100.00619.78
8.4.100.0100.00619.73
8.4.90.0160.00419.77
8.4.80.0120.00819.72
8.4.70.0100.01019.75
8.4.60.0090.01019.86
8.4.50.0110.00919.78
8.4.40.0100.01019.72
8.4.30.0120.00819.49
8.4.20.0120.00817.90
8.4.10.0080.01217.96
8.3.330.0110.00818.68
8.3.320.0090.00818.76
8.3.310.0070.00318.61
8.3.300.0120.00818.68
8.3.290.0090.01118.57
8.3.280.0120.00518.63
8.3.270.0090.00917.24
8.3.260.0130.00717.24
8.3.250.0110.00817.24
8.3.240.0150.00417.24
8.3.230.0130.00817.24
8.3.220.0100.00917.24
8.3.210.0110.00817.24
8.3.200.0120.00517.24
8.3.190.0070.00317.24
8.3.180.0080.00317.24
8.3.170.0050.00317.24
8.3.160.0050.00317.24
8.3.150.0050.00317.24
8.3.140.0060.00317.24
8.3.130.0030.00517.24
8.3.120.0050.00317.24
8.3.110.0050.00417.24
8.3.100.0060.00217.24
8.3.90.0040.00417.24
8.3.80.0070.00117.24
8.3.70.0050.00317.24
8.3.60.0050.00417.24
8.3.50.0060.00317.24
8.3.40.0070.00218.10
8.3.30.0040.00518.10
8.3.20.0050.00518.04
8.3.10.0070.00118.21
8.3.00.0050.00318.04
8.2.330.0040.00518.13
8.2.320.0070.00218.09
8.2.310.0060.00318.19

preferences:
60 ms | 800 KiB | 5 Q