2013-08-01 15 views
12

I getestet Inline anonyme Funktion mit array_map herearray_map Inline anonyme Funktion

und es hat funktioniert, aber wenn ich mit user_meta gleiche versucht, es funktioniert nicht ..

$user_meta = Array ([interest] => Array ([0] => Array) [type] => 
    Array ([0] => Array) [user_status] => Array ([0] => deny) 
    [firstname] => Array ([0] =>) [lastname] => Array ([0] => B) 
    [email] => [email protected]) 

    $user_meta = array_map(function($a) { return $a[0]; },$user_meta); 

„Parse error: Syntaxfehler, unerwartete T_FUNCTION, erwarten ')' in“

here is the test link showing error

+4

Ihre Definition des $ user_meta Array ist nicht gültig für eine PHP-Array, es ist print_r() Ausgabe, formatiert für die menschliche Lesbarkeit –

+0

P. S. Inline anonyme Funktionen funktionieren nur in PHP 5.3 + –

+0

@Paulpro Warum haben Sie die Formatänderung zurückgesetzt? – jmattheis

Antwort

10

Es ist nichts falsch mit der array_map Linie, aber alles bevor es falsch ist. Das ist die Ausgabe eines print_r nicht PHP-Codes. Vergleichen Sie, wie Sie das Array in den zwei von Ihnen geposteten Links definieren.

+0

Ich erhalte denselben Fehler, wenn ich das Array mit Argumenten übergebe .. Ich könnte es nur funktionieren lassen, indem ich explizit Funktion aufruft. [Hier] (http://3v4l.org/F0Sac) –

+0

Welche PHP-Version hast du? Die meisten Leute haben jetzt mindestens 5.3, und Ihr Code hat in 5.3 und höher funktioniert. – Paulpro

+0

Ich benutze PHP 5.5 nur Sie können den aktualisierten Link überprüfen ... wieder zeigt es Fehler –

12

Ich hoffe, das wird helfen: Es muss ein Leerzeichen oder mehr zwischen der Schlüsselwortfunktion und ihren Parametern sein. So sollte diese Arbeit:

$user_meta = array_map(function ($a) { return $a[0]; },$user_meta); 
+0

Dies ist eine gute Antwort, mit Ausnahme der Bemerkung "es muss ein Leerzeichen zwischen der Schlüsselwortfunktion und ihren Parametern sein". Weil ich den Platz entfernt habe und kein Problem hatte. –