2013-01-24 168 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)); 
      }); 
相關問題