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; }
Output for git.master, git.master_jit
0 1 2 ===== THESE ARE VALID AND CORRECT ===== ------ $mode is PHP constant ------------- array(1) { ["d"]=> int(4) } array(2) { ["b"]=> int(2) ["d"]=> int(4) } array(1) { ["b"]=> int(2) } ------ $mode is integer ------------- array(1) { ["d"]=> int(4) } array(2) { ["b"]=> int(2) ["d"]=> int(4) } array(1) { ["b"]=> int(2) } ===== THE BEHAVIOUR HERE IS UNEXPECTED, I WOULD EXPECT A TYPEERROR ===== ------- $mode is text string ------------ array(1) { ["d"]=> int(4) } array(2) { ["b"]=> int(2) ["d"]=> int(4) } array(1) { ["b"]=> int(2) } ------ $mode is float ------------- Deprecated: Implicit conversion from float 0.2 to int loses precision in /in/aGq6E on line 58 array(1) { ["d"]=> int(4) } Deprecated: Implicit conversion from float 1.3 to int loses precision in /in/aGq6E on line 62 array(2) { ["b"]=> int(2) ["d"]=> int(4) } Deprecated: Implicit conversion from float 2.2 to int loses precision in /in/aGq6E on line 66 array(1) { ["b"]=> int(2) } ------ $mode is boolean ------------- array(1) { ["d"]=> int(4) } array(2) { ["b"]=> int(2) ["d"]=> int(4) } ===== WHEN ERRORS ARE ACTUALLY THROWN ===== ------ $mode is invalid value ------------- array_filter(): Argument #3 ($mode) must be one of ARRAY_FILTER_USE_VALUE, ARRAY_FILTER_USE_KEY, or ARRAY_FILTER_USE_BOTH ------ $mode is invalid value and invalid type ------------- array_filter(): Argument #3 ($mode) must be of type int, string given

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
57.77 ms | 803 KiB | 4 Q