2010-09-03 12 views
10

Ich versuche, leere Elemente in einem Array mit der Funktion array_filter zu löschen.Leere Array-Elemente mit array_filter mit einer Callback-Funktion entfernen

Wenn ich einen externen Callback wie folgt verwenden:

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

es wie erwartet funktioniert.

Aber wenn ich so verwenden array_filter:

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

Es schlägt mit dem Fehler:

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

Was mache ich falsch?

+0

@moderator: Ich habe gerade auf diese Frage und http://stackoverflow.com/q/4043741/372239 innerhalb der gleichen Sekunde downvoted. Ich denke, ein serieller Downvoter funktioniert – Toto

Antwort

15

Es scheint, dass Sie eine PHP-Version verwenden, die anonymous functions nicht unterstützt (verfügbar seit PHP 5.3.0).

Aber array_filter ist bereits leer Werte auswählen, wenn Sie keine Callback-Funktion angeben:

Wenn kein callback geliefert wird, werden alle Einträge von input gleich FALSCH (siehe converting to boolean) wird entfernt.

+0

Danke, es funktioniert gut ohne Rückruf. – Toto

+0

Nur ein Hinweis, dass ohne einen Rückruf und Eingabe wie $ arr = array ("abc", "", "ghi", ""); Das letzte Element wird nicht herausgefiltert, da array_filter die Eingabe nicht trimmt. –

0

Es funktioniert gut mit PHP5. Überprüfen Sie Ihre PHP-Version und führen Sie bei Bedarf ein Upgrade durch.

+1

Ich habe PHP 5.1.6 und kann nicht upgraden :-( – Toto

Verwandte Themen