当前位置: 首页> 最新文章列表> array_filter() 中回调函数没有参数时的默认行为

array_filter() 中回调函数没有参数时的默认行为

M66 2025-06-05

在 PHP 中,array_filter() 是一个非常常用的数组处理函数,它用于过滤数组中的元素。array_filter() 函数可以接受两个参数,第一个参数是数组,第二个是回调函数(可选)。如果没有提供回调函数,则会使用默认行为。

array_filter() 函数的语法

array_filter(array $array, callable $callback = null, int $mode = 0): array
  • $array:待处理的数组。

  • $callback:用于每个数组元素的回调函数。回调函数必须返回 truefalse,决定该元素是否保留。

  • $mode:可选参数,用来指定过滤方式,默认值为 0

当没有提供回调函数时,array_filter() 会使用默认行为。

默认行为:删除所有假值(falsy values)

如果 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_KEYARRAY_FILTER_USE_BOTH 参数,来在回调函数中同时访问数组的键和值。