2010-09-03 4 views
10

J'essaie de supprimer des éléments vides dans un tableau avec la fonction array_filter.Supprimer les éléments de tableau vides avec array_filter avec une fonction de rappel

Quand j'utilise un rappel externe comme celui-ci:

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

fonctionne comme prévu.

Mais si j'utilise array_filter comme ça:

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

Il échoue avec l'erreur:

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

Qu'est-ce que je fais mal?

+0

@moderator: Je viens d'être downvoted sur cette question et http://stackoverflow.com/q/4043741/372239 dans la même seconde. Je suppose qu'un downvoter série fonctionne – Toto

Répondre

15

Il semble que vous utilisiez une version de PHP qui ne supporte pas anonymous functions (disponible depuis PHP 5.3.0).

Mais array_filter ne filtre déjà des valeurs vides si vous ne spécifiez pas une fonction de rappel:

Si aucun callback est fourni, toutes les entrées de input égale à FAUX (voir converting to boolean) sera supprimé.

+0

Merci, cela fonctionne bien sans rappel. – Toto

+0

Juste une note que sans un callback et une entrée comme $ arr = array ("abc", '', 'ghi', ''); le dernier élément ne sera pas filtré car array_filter ne coupera pas l'entrée. –

0

Cela fonctionne bien avec PHP5. Vérifiez votre version de PHP, et mettez à niveau si nécessaire.

+1

J'ai php 5.1.6 et ne peut pas mettre à niveau :-( – Toto

Questions connexes