Start · Sprachen · PHP · Referenz · list

list

Funktion

Weist mehreren Variablen gleichzeitig Werte aus einem Array zu, als wären sie ein Array.

seit PHP 4.0.0 Kategorie: array

Signatur

list(mixed &$var, mixed &...$vars): array

Beschreibung

list() ist ein Sprachkonstrukt, das es ermöglicht, mehrere Variablen in einem einzigen Ausdruck mit Werten aus einem Array zu befüllen. Es wird häufig auf der linken Seite einer Zuweisung verwendet und ist besonders praktisch, um z. B. Rückgabewerte von Funktionen, die ein Array liefern, direkt in benannte Variablen zu entpacken.

Seit PHP 7.1 unterstützt list() auch Schlüsselzuweisungen (Key-basiertes Destructuring), sodass nicht nur numerisch indizierte, sondern auch assoziative Arrays gezielt entpackt werden können. Zudem lassen sich seit PHP 7.1 Elemente überspringen, indem der entsprechende Platz einfach leer gelassen wird.

Als modernere und kürzere Schreibweise kann seit PHP 7.1 auch die kurze Array-Syntax [...] auf der linken Seite einer Zuweisung verwendet werden, was funktional identisch mit list() ist. Beide Varianten sind in der Praxis gleichwertig.

list() funktioniert ausschließlich mit Arrays. Bei einem Nicht-Array-Wert auf der rechten Seite wird seit PHP 7.1 ein E_WARNING ausgegeben. Bei verschachtelten Arrays ist auch verschachteltes Destructuring möglich.

Parameter

Name Typ Default Beschreibung
$var Pflicht mixed Die erste Variable, der ein Wert aus dem Array zugewiesen wird. Kann auch null oder ein Leerzeichen sein, um einen Wert zu überspringen.
$vars mixed Beliebig viele weitere Variablen, denen sukzessive Werte aus dem Array zugewiesen werden. Auch hier können Positionen durch Weglassen übersprungen werden.

Rückgabewert

Typ
array
Beschreibung
Gibt das zugewiesene Array zurück. In der Praxis wird dieser Rückgabewert kaum genutzt, da list() primär für den Seiteneffekt der Variablenzuweisung eingesetzt wird.

Beispiele

Grundlegende Verwendung: Koordinaten aus einem Array entpacken

<?php
$punkt = [10, 20, 30];

list($x, $y, $z) = $punkt;

echo "X: $x, Y: $y, Z: $z\n";
X: 10, Y: 20, Z: 30

Kurze Syntax mit assoziativem Array (PHP 7.1+)

<?php
$person = ['vorname' => 'Anna', 'nachname' => 'Müller', 'alter' => 30];

['vorname' => $vorname, 'nachname' => $nachname] = $person;

echo "$vorname $nachname\n";
Anna Müller

list() in einer foreach-Schleife

<?php
$koordinaten = [
    [1, 2],
    [3, 4],
    [5, 6],
];

foreach ($koordinaten as [$x, $y]) {
    echo "X=$x, Y=$y\n";
}
X=1, Y=2 X=3, Y=4 X=5, Y=6

Werte überspringen und verschachteltes Destructuring

<?php
$daten = [42, 'unwichtig', ['PHP', '8.0']];

list($id, , [$sprache, $version]) = $daten;

echo "ID: $id, Sprache: $sprache, Version: $version\n";
ID: 42, Sprache: PHP, Version: 8.0

// Wichtig · Fallstricke

Reihenfolge bei PHP < 7.0: In PHP 5 wurden die Zuweisungen von list() von rechts nach links vorgenommen, was bei verschachtelten list()-Aufrufen zu unerwarteten Ergebnissen führen konnte. Ab PHP 7.0 erfolgen die Zuweisungen von links nach rechts.

String-Zugriff: list() funktioniert nicht mit Strings. Versuche, einen String zu entpacken, führen zu einem Fehler.

Kurzschreibweise bevorzugen: Die moderne [...]-Syntax auf der linken Seite der Zuweisung ist kompakter und wird in neuen Projekten bevorzugt. list() ist jedoch für die Kompatibilität mit älterem Code weiterhin vollständig unterstützt.

Achtung mit null: Wenn die rechte Seite kein Array ist (z. B. null oder ein Integer), gibt PHP seit Version 7.1 eine E_WARNING-Warnung aus und die Variablen bleiben null.