PHP的array_filter函数用法简介
发布时间:2023-06-06 19:17:29
PHP中的array_filter函数是一个非常有用的函数,它可以对一个数组进行过滤操作,返回仅包含符合条件数组元素的新数组。
array_filter函数的语法如下:
array array_filter ( array $arr , callable $callback [, int $flag = 0 ] )
其中,$arr是需要过滤的数组,$callback是一个回调函数,用于定义过滤条件,$flag是一个可选参数,用于定义回调函数的参数个数。
回调函数$callback有两种基本形式:
1. 具有单个参数的回调函数,用于进行简单的过滤操作。回调函数的参数即为数组元素本身,如果回调函数返回true,则该元素将保留在新数组中,否则将被过滤掉。
比如,以下代码使用回调函数删除数组中所有的空值:
$arr = array('foo', '', 'bar', null, 'baz');
$result = array_filter($arr, function($val) {
return !empty($val);
});
print_r($result);
输出结果:
Array
(
[0] => foo
[2] => bar
[4] => baz
)
2. 具有两个参数的回调函数,用于对数组元素进行更复杂的过滤操作。回调函数的 个参数为数组元素本身,第二个参数为该元素的键名。如果回调函数返回true,则该元素保留在新数组中,否则将被过滤掉。
比如,以下代码使用回调函数删除数组中所有奇数键名的元素:
$arr = array(0 => 'foo', 1 => 'bar', 2 => 'baz', 3 => 'qux');
$result = array_filter($arr, function($val, $key) {
return $key % 2 == 0;
}, ARRAY_FILTER_USE_BOTH);
print_r($result);
输出结果:
Array
(
[0] => foo
[2] => baz
)
在以上代码中,我设置$flag参数为ARRAY_FILTER_USE_BOTH,以允许回调函数同时接收数组元素和键名两个参数。
除此之外,我们还可以使用array_filter函数对多维数组进行过滤,例如:
$arr = array(
array('name' => 'foo', 'age' => 20),
array('name' => 'bar', 'age' => 25),
array('name' => 'baz', 'age' => 30)
);
$result = array_filter($arr, function($val) {
return $val['age'] > 25;
});
print_r($result);
输出结果:
Array
(
[2] => Array
(
[name] => baz
[age] => 30
)
)
总之,array_filter函数是一个非常实用的函数,我们可以使用它对数组进行各种过滤操作,让我们的代码变得更加简洁、优雅。
