目录
array_filter()
是一个 PHP 函数,用于通过回调函数过滤数组中的每个元素。它会遍历数组中的每个元素,将每个元素传递给回调函数。如果回调函数返回 true
,则保留数组中的当前元素;否则,删除数组中的当前元素。
函数语法如下:
array_filter(array $array, callable $callback, int $mode = 0): array
参数:
$array
:要过滤的数组。$callback
:回调函数,用于确定是否保留数组中的当前元素。如果省略此参数,则默认使用?boolval()
?函数。$flag
:可选的标志,用于修改过滤行为。支持的标志有:
ARRAY_FILTER_USE_KEY
:将数组键传递给回调函数。ARRAY_FILTER_USE_BOTH
:将数组键和值作为数组传递给回调函数。返回值:
返回过滤后的数组。
下面是一些示例:
$array = [1, 2, 3, 4, 5];
// 过滤出大于3的元素
$filteredArray = array_filter($array, function($value) {
return $value > 3;
});
print_r($filteredArray);
// 输出: Array ( [1] => 4 [2] => 5 )
// 过滤数组中的偶数
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$filtered = array_filter($array, function ($value) {
return $value % 2 == 0;
});
print_r($filtered);
// 输出:Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 )
$array = ['apple', '', 'banana', null, 'cherry', false, 'durian'];
$filtered = array_filter($array);
print_r($filtered);
// 输出:Array ( [0] => apple [2] => banana [4] => cherry [6] => durian )
$array = ['a', 'b', 'c', 'd'];
// 过滤出以字母 'c' 开头的元素
$filteredArray = array_filter($array, function($value) {
return strpos($value, 'c') === 0;
});
print_r($filteredArray);
// 输出: Array ( [2] => c [3] => d )
$array = ['a', '', 'b', [], 'c'];
// 过滤出非空元素
$filteredArray = array_filter($array, function($value) {
return !empty($value);
}, FILTER_INCLUDE_EMPTY);
print_r($filteredArray);
// 输出: Array ( [0] => a [2] => b [3] => c )
$array = ['id'=>1, 'id'=>2, 'id'=>3, 'id'=>4, 'id'=>5];
$id = 3;
$filteredArray = array_filter($array, function ($item) use ($id) {
return $item['id'] == $id;
});
在使用 array_filter() 时,请注意它不会改变原始数组,而是返回一个新的过滤后的数组。此外,回调函数必须是一个可调用的类型,如普通函数、匿名函数、对象方法等。
?