PHP中的此内置函数用于使用用户定义的函数(也称为回调函数)过滤数组的元素。array_filter()函数遍历数组中的每个值,并将它们传递给用户定义的函数或回调函数。如果回调函数返回true,则将当前数组的值返回给结果数组,否则不返回。这样,数组的键就会保留下来,即原始数组和输出数组中的元素键是相同的。
语法:
array array_filter(array,callback_function, $flag)
参数:该函数采用三个参数,其中一个是必需的,另外两个是可选的。
array(必需):这是要进行过滤操作的输入数组。callback_function(可选):指的是用户定义的函数。如果不提供该函数,则将删除数组中所有等于FALSE的条目。
$flag(可选):指的是传递给回调函数的参数。
ARRAY_FILTER_USE_KEY - 将键作为唯一的参数传递给回调函数,而不是数组的值。
ARRAY_FILTER_USE_BOTH - 将值和键都作为参数传递给回调函数,而不是值。
返回值:该函数返回一个过滤后的数组。
下面是一个程序,展示了如何使用array_filter()函数返回或过滤数组中的偶数元素。
<?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"));
?>
output:
Array
(
[0] => 12
[1] => 0
[2] => 0
[3] => 18
[5] => 0
[6] => 46
)
在这个例子中,我们不传递回调函数,让我们看看输出。我们将看到0或false的元素没有被打印出来:
<?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));
?>
output:
Array
(
[0] => 12
[3] => 18
[4] => 27
[6] => 46
)