array_filter() Function
PHP中的这个内置函数用于使用用户定义函数(也称为回调函数)过滤数组元素。array_filter()函数迭代数组中的每个值,将它们传递给用户定义函数或回调函数。如果回调函数返回true,则数组的当前值返回给结果数组,否则返回值为false。这样数组的键就得到了保留,即原数组和输出数组中的元素键是相同的。
语法
1 | array array_filter($array, $callback_function, $flag) |
参数:函数接受三个参数,其中一个是必需的,另外两个是可选的。
- $array (mandatory):指的是要在其上执行过滤操作的输入数组。
- $callback_function(可选):指的是用户定义的函数。如果没有提供函数,那么数组中所有等于FALSE的元素都将被删除。
- $flag(可选):指传递给回调函数的参数。
- ARRAY_FILTER_USE_KEY -将key作为唯一的参数传递给回调函数,而不是数组的值。
- ARRAY_FILTER_USE_BOTH -将值和键作为参数传递给回调,而不是值。
返回值:函数返回一个经过过滤的数组。
下面是一个程序,演示如何使用array_filter()函数从数组中返回或过滤掉元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php // PHP function to check for even elements in an array function Even($array) { // returns if the input integer is even if($array%2==0) return TRUE; else return FALSE; } $array = array(12, 0, 0, 18, 27, 0, 46); print_r(array_filter($array, "Even")); ?> |
输出
1 2 3 4 5 6 7 8 9 | Array ( [0] => 12 [1] => 0 [2] => 0 [3] => 18 [5] => 0 [6] => 46 ) |
在本例中,我们将不传递回调函数,而是查看输出。我们将看到0或false元素没有打印:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php // PHP function to check for even elements in an array function Even($array) { // returns if the input integer is even if($array%2==0) return TRUE; else return FALSE; } $array = array(12, 0, 0, 18, 27, 0, 46); print_r(array_filter($array)); ?> |
输出
1 2 3 4 5 6 7 | Array ( [0] => 12 [3] => 18 [4] => 27 [6] => 46 ) |
参考