在 PHP 开发过程中,处理数组是非常常见的需求。其中一个典型场景是:我们希望移除数组中布尔值为 false 的元素,比如 false、0、""(空字符串)、null、空数组等。此时,array_filter() 函数就是一个非常好用的工具。
array_filter() 是 PHP 的内置函数,它的作用是用回调函数对数组中的每个元素进行过滤,返回一个由所有通过回调函数测试的元素组成的新数组。如果不传回调函数,它将自动移除所有布尔值为 false 的元素。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$array:要过滤的原始数组
$callback(可选):自定义回调函数
$mode(可选):可以控制传给回调函数的是键还是值或两者
当我们不传递任何回调函数时,array_filter() 默认会移除数组中所有等价于 false 的值。
$data = [
'name' => 'John',
'age' => 0,
'email' => '',
'is_active' => false,
'preferences' => [],
'bio' => null,
'website' => 'https://m66.net/profile/john'
];
$filtered = array_filter($data);
print_r($filtered);
Array
(
[name] => John
[website] => https://m66.net/profile/john
)
如你所见,0、''、false、null、[] 都被过滤掉了,只留下布尔值为 true 的元素。
比如你想只移除 false 和 null,而保留 0 和 '',那就需要自定义回调函数:
$filtered = array_filter($data, function ($value) {
return $value !== false && $value !== null;
});
print_r($filtered);
这样就可以更精准地控制过滤规则。