当前位置: 首页> 最新文章列表> 使用 array_filter() 过滤布尔值为 false 的元素

使用 array_filter() 过滤布尔值为 false 的元素

M66 2025-06-05

在 PHP 开发过程中,处理数组是非常常见的需求。其中一个典型场景是:我们希望移除数组中布尔值为 false 的元素,比如 false0""(空字符串)、null、空数组等。此时,array_filter() 函数就是一个非常好用的工具。

什么是 array_filter()?

array_filter() 是 PHP 的内置函数,它的作用是用回调函数对数组中的每个元素进行过滤,返回一个由所有通过回调函数测试的元素组成的新数组。如果不传回调函数,它将自动移除所有布尔值为 false 的元素。

语法:

array_filter(array $array, ?callable $callback = null, int $mode = 0): array
  • $array:要过滤的原始数组

  • $callback(可选):自定义回调函数

  • $mode(可选):可以控制传给回调函数的是键还是值或两者

示例:移除布尔值为 false 的元素

当我们不传递任何回调函数时,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''falsenull[] 都被过滤掉了,只留下布尔值为 true 的元素。

如果你只想过滤掉某些“假值”怎么办?

比如你想只移除 falsenull,而保留 0'',那就需要自定义回调函数:

$filtered = array_filter($data, function ($value) {
    return $value !== false && $value !== null;
});

print_r($filtered);

这样就可以更精准地控制过滤规则。