Skip to main content

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".

  1. 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‘]
  2. list(...) = ...: Jetzt kommt list() 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.

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 wie list(). Anstelle von list(...) 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.
    

Leave a Reply