2013-01-24 169 views
4
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方法不能调用这个函数?

警告:array_filter()预计参数2是一个有效的回调,功能“returnSameElementIfNotEmpty”未找到或无效的函数名在C:\框架\ ArrayMethods.php第27行

回答

6

试试这个:

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

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

+0

我想这样的:回报array_filter($阵列,__CLASS __ ':: returnSameElementIfNotEmpty'。)它工作,但它为什么如此? –

+0

看到我的回答,我已经添加了一小部分。 – Niels

+0

我试过self :: returnSameElementIfNotEmpty(),那也没有帮助吗? –

1

非常好,在文档中没有提到。

阵列(CLASS, 'returnSameElementIfNotEmpty')解决了警告

更优雅:

$ArrModEmpty = array_filter($array, function($Arr){ 
       return (empty($Arr)); 
      }); 
相关问题