PHP的array_filter函数
简介
在PHP中,array_filter函数用于过滤数组中的元素。它遍历数组中的每个元素,并根据给定的回调函数的返回值来决定是否保留该元素。array_filter函数返回一个新数组,其中包含满足过滤条件的元素。
array_filter的基本语法如下:
array array_filter ( array array [, callablecallback [, int $flag = 0 ]] )
参数说明:
$array
:必需,要进行过滤的数组。$callback
:可选,一个回调函数,用于对数组的每个元素进行过滤。如果没有提供回调函数,array_filter的默认行为是删除值为false
,null
,0
,空字符串或空数组的元素。$flag
:可选,用于决定回调函数的输入参数个数。如果设置为1(默认值),则回调函数的参数是数组的值;如果设置为2,则回调函数的参数是数组的键和值。
示例
下面是一些使用array_filter函数的示例:
示例一
在这个示例中,我们将使用array_filter函数来过滤掉数组中的偶数。
<?php
array = [1, 2, 3, 4, 5, 6, 7, 8, 9];result = array_filter(array, function(value) {
return value % 2 !== 0;
});
print_r(result);
?>
运行结果:
Array
(
[0] => 1
[2] => 3
[4] => 5
[6] => 7
[8] => 9
)
在这个示例中,回调函数 function($value)
返回了奇数的元素。
示例二
在这个示例中,我们将使用array_filter函数来过滤掉数组中的空值。
<?php
array = ['apple', '', 'orange', null, 'banana', []];result = array_filter(array);
print_r(result);
?>
运行结果:
Array
(
[0] => apple
[2] => orange
[4] => banana
)
在这个示例中,由于没有提供回调函数,array_filter删除了数组中的空字符串和空数组。
示例三
在这个示例中,我们将使用array_filter函数来过滤出数组中长度大于3的字符串。
<?php
array = ['apple', 'orange', 'banana', 'pear', 'grape'];result = array_filter(array, function(value) {
return strlen(value)>3;
});
print_r(result);
?>
运行结果:
Array
(
[0] => apple
[1] => orange
[2] => banana
[3] => pear
[4] => grape
)
在这个示例中,回调函数 function($value)
返回了长度大于3的字符串。
注意事项
在使用array_filter函数时,需要注意以下几点:
- 如果回调函数中返回
true
,则保留该元素;否则,删除该元素。 - 如果没有提供回调函数(即只传入了数组参数),默认情况下,array_filter函数将删除值为
false
,null
,0
,空字符串或空数组的元素。 - 如果提供了回调函数,但没有指定
$flag
参数,回调函数的参数个数默认为1,即数组的值;如果指定了$flag
参数为2,回调函数的参数个数为键和值。 - array_filter函数不会改变数组的键。
结论
array_filter函数是一个非常实用的PHP数组过滤函数,它可以帮助我们快速过滤数组中的元素,并返回满足过滤条件的新数组。通过合理地使用回调函数,我们可以实现各种灵活的过滤需求。