<?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; }
You have javascript disabled. You will not be able to edit any code.