为什么这个array_filter方法没有调用这个函数?

时间:2013-01-24 17:33:38

标签: php callback array-filter

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


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

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

警告:array_filter()希望参数2成为有效的回调,函数" returnSameElementIfNotEmpty'在第27行的C:\ Framework \ ArrayMethods.php中找不到或无效的函数名称

2 个答案:

答案 0 :(得分:6)

试试这个:

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

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

答案 1 :(得分:1)

很好,在未提及的文档中。

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

更优雅:

$ArrModEmpty = array_filter($array, function($Arr){
                return (empty($Arr));
            });