没有回调array_filter有什么作用?

2022-08-30 19:52:59

我刚刚遇到这个代码:

array_filter(array_map('intval', $array));

它似乎返回$array转换为int的所有条目,其中数字>0。

但是,我无法在手册页上看到这是定义的。如果回调函数的计算结果为 true,则应返回数组值。但这里没有定义任何回调函数。

令人困惑的另一点是,回调函数在手册页上是可选的。


答案 1

从数组中删除空值或等效值:

$entry = array(
    0 => 'foo',
    1 => false,
    2 => -1,
    3 => null,
    4 => '',
    5 => 0
);
    
print_r(array_filter($entry));

结果

Array
(
    [0] => foo
    [2] => -1
)

请参阅手册中的原始文档示例 #2 array_filter() 不带回调


答案 2

如果你在链接到的页面上进一步阅读,你会发现,“如果没有提供回调,所有数组等于FALSE的条目(请参阅转换为布尔值)都将被删除。