2010-09-03 13 views
10

Sto tentando di eliminare elementi vuoti in un array con la funzione array_filter.Rimuovere gli elementi di array vuoti con array_filter con una funzione di callback

Quando uso un callback esterno come questo:

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

esso funziona come previsto.

Ma se io uso array_filter così:

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

non riesce con l'errore:

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

Che cosa sto facendo di sbagliato?

+0

@moderator: Sono appena stato downvoted su questa domanda e http://stackoverflow.com/q/4043741/372239 entro lo stesso secondo. Immagino che un serial downvoter funzioni – Toto

risposta

15

Sembra che si stia utilizzando una versione PHP che non supporta anonymous functions (disponibile da PHP 5.3.0).

Ma array_filter già fa filtrare valori vuoti se non si specifica una funzione di callback:

Se non callback viene fornito, tutte le voci di input pari a FALSE (vedi converting to boolean) sarà rimosso.

+0

Grazie, funziona bene senza callback. – Toto

+0

Solo una nota che senza callback e input come $ arr = array ("abc", "',' ghi ',' '); l'ultimo elemento non verrà filtrato poiché array_filter non triterà l'input. –

0

Funziona bene con PHP5. Controlla la tua versione di PHP e aggiorna se necessario.

+1

Ho php 5.1.6 e non posso aggiornare :-( – Toto

Problemi correlati