【发布时间】:2020-11-22 23:21:47
【问题描述】:
array_filter 函数的callback 参数的默认值是多少?
假设我们有数组:
$input = [
"Required field" => true
"Please, enter a number" => false
];
通常情况下,我使用array_filter 而不显式设置callback 参数,如array_filter( $input),此函数将返回以下数组:
$input = [
"Required field" => true
];
但现在我需要准确设置callback 参数。因此,当我发送 null 作为回调时,此函数返回 null 并且“非空”值(“必填字段”=> true)被忽略,我不喜欢什么。
当然,我可以使用自己的回调函数来调用该函数,例如:
array_filter( $input, fn($item) => !empty($item) )
但我希望有更优雅的方式
【问题讨论】:
-
您能否提供在这种情况下您需要的输入和所需的输出,因为在没有回调的情况下仅调用
array_filter对您来说是不够的? -
关于您的开场问题,在您自己链接的文档中进行了描述:
If no callback is supplied, all empty entries of array will be removed. See empty() for how PHP defines empty in this case. -
我只想通过显式设置
callback参数从空值中过滤数组,但以更优雅的方式而不是设置自己的回调函数。 -
最优雅的方式真的是不设置回调。为什么要传递与默认值完全相同的回调?
-
我想做
array_filter_recursive函数。就像在这个例子中:stackoverflow.com/a/6795671/7265862。如您所见,在第二个函数中,有$callback参数,稍后将传递给array_filter函数。我不想使用 if else 语句来检查 null$callback参数。这就是我向社区寻求优雅解决方案的原因