2010-09-03 102 views
10

我想用array_filter函數刪除數組中的空元素。用array_filter和回調函數刪除空數組元素

當我使用一個外部的回調是這樣的:

function callback($a) { return !empty($a);} 
$arr = array("abc",'','ghi'); 
$res = array_filter($arr, "callback"); 

它按預期工作。

但是,如果使用array_filter這樣的:

$arr = array("abc",'','ghi'); 
$res = array_filter($arr, function($a) { return !empty($a);}); 

它失敗,出現錯誤:

PHP Parse error: syntax error, unexpected T_FUNCTION in test.php on line 2 

我到底做錯了什麼?

+0

@moderator:我剛剛在這個問題和同一秒內的http://stackoverflow.com/q/4043741/372239 downvoted。我想連續downvoter運行 – Toto 2015-08-02 09:03:24

回答

15

看來您使用的PHP版本不支持anonymous functions(自PHP 5.3.0起可用)。

array_filter並已經篩選空值,如果你不指定一個回調函數:如果沒有callback供應

,所有條目input等於FALSE(見converting to boolean)將被刪除。

+0

謝謝,沒有回調它運作良好。 – Toto 2010-09-03 13:10:35

+0

只是一個注意,沒有回調和輸入像$ arr = array(「abc」,'','ghi','');最後一項不會被過濾掉,因爲array_filter不會修剪輸入。 – 2011-06-06 19:17:34

0

它適用於PHP5。檢查你的PHP版本,並在必要時升級。

+1

我有PHP 5.1.6,無法升級:-( – Toto 2010-09-03 13:12:01