在 PHP 中,array_filter() 是一个非常常用的数组处理函数,它用于过滤数组中的元素。array_filter() 函数可以接受两个参数,第一个参数是数组,第二个是回调函数(可选)。如果没有提供回调函数,则会使用默认行为。
array_filter(array $array, callable $callback = null, int $mode = 0): array
$array:待处理的数组。
$callback:用于每个数组元素的回调函数。回调函数必须返回 true 或 false,决定该元素是否保留。
$mode:可选参数,用来指定过滤方式,默认值为 0。
当没有提供回调函数时,array_filter() 会使用默认行为。
如果 array_filter() 没有接收到回调函数,那么它会自动使用一个默认的过滤行为:删除数组中所有“假值”。在 PHP 中,“假值”包括以下几种:
false
null
0(整数0)
0.0(浮点数0)
''(空字符串)
'0'(字符串'0')
空数组
任何这些假值都会被从数组中移除,只有那些被认为是真值的元素会被保留下来。
假设你有一个数组,如下所示:
$array = [0, 1, false, 2, null, 3, '', '0', 4];
如果我们调用 array_filter(),而没有传入回调函数:
$result = array_filter($array);
print_r($result);
输出将是:
Array
(
[1] => 1
[3] => 2
[5] => 3
[8] => 4
)
可以看到,所有的“假值”都被移除了,数组中只剩下了有效的元素。
这种默认行为非常有用,尤其是在处理需要去除无效数据的数组时。例如,假设你从用户表单中获取到一些数据,可能包含了空值、0、或者 null。使用 array_filter() 默认行为可以快速地清除掉这些无效数据,保留有效的值。
当 array_filter() 没有提供回调函数时,它默认会移除数组中的“假值”。
这种默认行为可以帮助开发者轻松地过滤掉不必要的数据,尤其在处理不完整或者无效的输入时非常有用。
其他注意事项:
如果你希望根据自定义的规则来过滤数组,你可以传入一个回调函数,而不是依赖默认行为。
你也可以使用 ARRAY_FILTER_USE_KEY 或 ARRAY_FILTER_USE_BOTH 参数,来在回调函数中同时访问数组的键和值。