警告:array_filter()期望参数2是有效的回调,找不到函数'empty'或函数名称无效....
为什么空被认为是无效的回调?
$arr = array_filter($arr, 'empty');
Run Code Online (Sandbox Code Playgroud)
这有效: if(empty($arr['foo'])) die();
empty()它不是一个函数,而是一个语言结构,array_filter()只能接受一个函数作为它的回调.
这是手册页上的一个小注释:
注意:因为这是一种语言结构而不是函数,所以不能使用变量函数调用它
要解决此问题,您可以将空包装在另一个函数中,例如:
function empty_test($val) {
return empty($val);
}
Run Code Online (Sandbox Code Playgroud)
然后像这样调用它:
$arr = array_filter($arr, 'empty_test');
Run Code Online (Sandbox Code Playgroud)
empty()是一种语言构造,而不是PHP的真正功能,因此您不能将其名称作为参数传递给像array_filter()和这样的函数call_user_func_array().
从手册:
注意:因为这是一种语言结构而不是函数,所以不能使用变量函数调用它
要获得解决方法,只需将其包装在另一个用户定义的函数中; 看到Treffynnon的回答.
请参阅以下文档页面empty():
注意:因为这是一种语言结构而不是函数,所以不能使用变量函数调用它
所以基本上empty()不是函数,因为回调必须是函数,empty()不能作为回调传递.
但是您可以创建可能使用的回调empty().以下应该在PHP> 5.3中工作:
$arr = array_filter($arr, function($var){
return empty($var);
});
Run Code Online (Sandbox Code Playgroud)
在PHP <5.3中,您需要先创建类似的函数,然后将其传递给array_filter().
它有帮助吗?
| 归档时间: |
|
| 查看次数: |
8585 次 |
| 最近记录: |