Php 为什么此数组\过滤器方法不调用此函数?

Php 为什么此数组\过滤器方法不调用此函数?,php,callback,array-filter,Php,Callback,Array Filter,当我尝试使用示例数组运行此命令时,我得到: 警告:array\u filter()要求参数2为有效回调,在第27行的C:\Framework\ArrayMethods.php中未找到函数“returnSameElementIfNotEmpty”或函数名无效 private static function returnSameElementIfNotEmpty($item) { if (empty($item)) { return false; } else

当我尝试使用示例数组运行此命令时,我得到:

警告:array\u filter()要求参数2为有效回调,在第27行的C:\Framework\ArrayMethods.php中未找到函数“returnSameElementIfNotEmpty”或函数名无效

private static function returnSameElementIfNotEmpty($item) {
    if (empty($item)) {
        return false;
    }
    else{
        return true;
    }
}


public static function clean($array) {
    return array_filter($array, 'returnSameElementIfNotEmpty');
}

发生错误的原因是您没有调用类方法。但只是一个有这个名字的函数。在上面的示例中,我使用CLASS作为类类型来访问静态函数
returnSameElementIfNotEmpty

非常好,在未提及的文档中

数组(CLASS,'returnSameElementIfNotEmpty')解决警告问题

更优雅:

return array_filter($array, array(__CLASS__, 'returnSameElementIfNotEmpty'));

我尝试了如下方法:returnarray_filter($array,CLASS.'::returnSameElementIfNotEmpty');它是有效的,但为什么会这样呢?看我的答案,我添加了一小部分。我尝试了self::returnSameElementIfNotEmpty(),这也没有帮助吗?
$ArrModEmpty = array_filter($array, function($Arr){
                return (empty($Arr));
            });