2010-09-03 54 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