list()
ist keine Funktion, sondern ein Sprachkonstrukt in PHP, mit dem du die Werte aus einem Array auf einmal mehreren Variablen zuweisen kannst. Stell es dir wie das Auspacken einer Kiste vor: Du hast eine Kiste (das Array) mit mehreren Gegenständen und legst jeden Gegenstand direkt in ein eigenes Fach (eine Variable). 📦
Dieser Vorgang wird auch Array-Destrukturierung (Array Destructuring) genannt.
Beispiel erklärt
Schauen wir uns deinen Code Schritt für Schritt an:
list($controller, $controllerMethod) = explode("@", $action);
Angenommen, die Variable $action
enthält den String "UserController@show"
.
- explode(„@“, $action): Zuerst wird die explode()-Funktion ausgeführt. Sie zerlegt den String $action am @-Zeichen. Das Ergebnis ist ein Array mit zwei Elementen:[‚UserController‘, ’show‘]
list(...) = ...
: Jetzt kommtlist()
ins Spiel. Es nimmt das Ergebnis-Array und weist die Werte den Variablen in der Reihenfolge zu, in der sie in der Liste stehen:- Der erste Wert des Arrays (
'UserController'
) wird der ersten Variable ($controller
) zugewiesen. - Der zweite Wert des Arrays (
'show'
) wird der zweiten Variable ($controllerMethod
) zugewiesen.
- Der erste Wert des Arrays (
Nach dieser einen Zeile Code hast du also zwei neue, gefüllte Variablen:
$controller
enthält jetzt den Wert"UserController"
.$controllerMethod
enthält jetzt den Wert"show"
.
Dieses Muster wird oft in älteren Frameworks (wie z. B. Laravel) verwendet, um Routen-Definitionen zu verarbeiten.
Ein weiteres einfaches Beispiel
Stell dir vor, du hast ein einfaches Array mit Benutzerdaten.
PHP
$benutzer = ['Max', 'Mustermann', 35];
Anstatt die Werte einzeln zuzuweisen…
PHP
$vorname = $benutzer[0];
$nachname = $benutzer[1];
$alter = $benutzer[2];
…kannst du list()
für eine saubere und kurze Zuweisung verwenden:
PHP
// Die Werte werden der Reihe nach zugewiesen
list($vorname, $nachname, $alter) = $benutzer;
echo "Hallo, mein Name ist $vorname $nachname und ich bin $alter Jahre alt.";
// Ausgabe: Hallo, mein Name ist Max Mustermann und ich bin 35 Jahre alt.
Wichtige Hinweise & Moderne Schreibweise
- Moderne Kurzschreibweise
[]
: Seit PHP 7.1 gibt es eine kürzere und heute üblichere Schreibweise, die genau dasselbe tut wielist()
. Anstelle vonlist(...)
kannst du einfach eckige Klammern[...]
verwenden.PHP
// Alte Schreibweise list($vorname, $nachname) = $benutzer; // Moderne, kurze Schreibweise [$vorname, $nachname] = $benutzer;
]
- Funktioniert nur mit numerischen Indizes:
list()
funktioniert nur mit Arrays, die numerische Schlüssel haben (0, 1, 2, …). Es kann nicht mit assoziativen Arrays (z.B.['name' => 'Max']
) verwendet werden. - Elemente überspringen: Du kannst Elemente im Array überspringen, indem du eine Variable in der Liste einfach auslässt.
PHP
$benutzer = ['Max', 'Mustermann', 35]; // Wir wollen nur Vorname und Alter list($vorname, , $alter) = $benutzer; echo "$vorname ist $alter Jahre alt."; // Ausgabe: Max ist 35 Jahre alt.