list
(PHP 4, PHP 5, PHP 7, PHP 8)
list — Weist Variablen zu, als wären sie ein Array
Beschreibung
Wie array() ist auch dies keine Funktion, sondern ein Sprachkonstrukt. list() wird verwendet, um eine Liste von Variablen in einer Operation zuzuweisen. Zeichenketten können nicht verarbeitet werden und der list()-Ausdruck darf nicht vollständig leer sein.
Hinweis:
Vor PHP 7.1.0 funktionierte list() nur bei numerischen Arrays und basierte auf der Annahme, dass die numerischen Indizes bei 0 beginnen.
Parameter-Liste
-
var
-
Eine Variable.
-
vars
-
Weitere Variablen.
Rückgabewerte
Gibt das zugewiesene Array zurück.
Changelog
Version | Beschreibung |
---|---|
7.3.0 | Die Unterstützung von Referenzzuweisungen bei der Arraydestrukturierung wurde hinzugefügt. |
7.1.0 | Es ist nun möglich, Schlüssel in list() anzugeben. Dies ermöglicht die Destrukturierung von Arrays mit nicht-numerischen oder nicht-fortlaufenden Schlüsseln. |
Beispiele
Beispiel #1 list()-Beispiele
<?php
$info = array('Kaffee', 'braun', 'Koffein');
// Auflisten aller Variablen
list($drink, $color, $power) = $info;
echo "$drink ist $color und $power macht es zu etwas Besonderem.\n";
// Ein paar davon auflisten
list($drink, , $power) = $info;
echo "$drink hat $power.\n";
// Oder nur die dritte ausgeben
list( , , $power) = $info;
echo "Ich brauche $power!\n";
// list() funktioniert nicht mit Zeichenketten
list($bar) = "abcde";
var_dump($bar); // NULL
?>
Beispiel #2 Ein Beispiel für die Verwendung von list()
<?php
$result = $pdo->query("SELECT id, name FROM employees");
while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) {
echo "id: $id, name: $name\n";
}
?>
Beispiel #3 Verschachtelte list()-Ausdrücke verwenden
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1) int(2) int(3)
Beispiel #4 list() und die Reihenfolge der Index-Definitionen
Die Reihenfolge, in der die Indizes des von list() zu verarbeitenden Arrays definiert werden, ist irrelevant.
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
Erzeugt folgende Ausgabe (beachten Sie die Reihenfolge der Elemente verglichen mit der in list() eingetragenen Reihenfolge):
array(4) { [2]=> string(1) "a" ["foo"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "d" } string(1) "c" string(1) "d" string(1) "a"
Beispiel #5 list() mit Schlüsseln
Von PHP 7.1.0 an kann list() nun ebenfalls explizite Schlüssel enthalten, die als beliebige Ausdrücke angegeben werden können. Die Kombination von Integer- und Zeichenkettenschlüsseln ist erlaubt; allerdings dürfen Elemente mit und ohne Schlüssel nicht kombiniert werden.
<?php
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
foreach ($data as ["id" => $id, "name" => $name]) {
echo "id: $id, name: $name\n";
}
echo PHP_EOL;
list(1 => $zweites, 3 => $viertes) = [1, 2, 3, 4];
echo "$zweites, $viertes\n";
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
id: 1, name: Tom id: 2, name: Fred 2, 4