list
(PHP 4, PHP 5, PHP 7)
list — Weist Variablen zu, als wären sie ein Array
Beschreibung
Wie array() ist auch dies keine wirkliche Funktion, sondern ein Sprachkonstrukt. list() wird verwendet, um eine Liste von Variablen mit einer Operation zuzuweisen.
Hinweis:
Vor PHP 7.1.0 funktionierte list() nur bei numerischen Arrays und basierte auf der Annahme, dass die numerischen Indizes bei 0 beginnen.
In PHP 5 weist list() die Werte von rechts beginnend zu. In PHP 7 beginnt list() von links.
Wenn Sie einfache Variablen benutzen, brauchen Sie sich nicht darum zu kümmern. Wenn Sie jedoch Arrays mit Indizes verwenden, erwarten Sie gewöhnlich die Reihenfolge der Indizes in dem Array genau so, wie Sie sie in list() geschrieben haben (von links nach rechts), was jedoch in PHP 5 nicht der Fall ist. Es wird in der umgekehrten Reihenfolge zugewiesen.
Allgemein gesagt, ist es ratsam sich nicht auf eine bestimmte Operations-Reihenfolge zu verlassen, da sich diese zukünftig wieder ändern könnte.
Changelog
Version | Beschreibung |
---|---|
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. |
7.0.0 | Die Reihenfolge, in der die Zuweisungsoperationen durchgeführt werden, wurde geändert. |
7.0.0 | list() Ausdrücke dürfen nicht mehr vollständig leer sein. |
7.0.0 | Zeichenketten können nicht mehr entpackt werden. |
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 Eine Beispielverwendung von list()
<table>
<tr>
<th>Mitarbeitername</th>
<th>Gehalt</th>
</tr>
<?php
$result = $pdo->query("SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) {
echo " <tr>\n".
" <td><a href=\"info.php?id=$id\">$name</a></td>\n".
" <td>$salary</td>\n".
" </tr>\n";
}
?>
</table>
Beispiel #3 Verschachtelte list() 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() mit Array Indizes verwenden
<?php
$info = array('Kaffee', 'braun', 'Koffein');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
Erzeugt folgende Ausgabe (beachten Sie die Reihenfolge der Elemente verglichen mit der in list() eingetragenen Reihenfolge):
Das oben gezeigte Beispiel erzeugt folgende Ausgabe mit PHP 7:
array(3) { [0]=> string(6) "Kaffee" [1]=> string(5) "braun" [2]=> string(7) "Koffein" }
Das oben gezeigte Beispiel erzeugt folgende Ausgabe mit PHP 5:
array(3) { [2]=> string(7) "Koffein" [1]=> string(5) "braun" [0]=> string(6) "Kaffee" }
Beispiel #5 list() und die Reihenfolge der Index-Definitionen
Die Reihenfolge, in der die Indizes des von list() zu konsumierenden Arrays definiert wurden, 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 #6 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 => $second, 3 => $fourth) = [1, 2, 3, 4];
echo "$second, $fourth\n";
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
id: 1, name: Tom id: 2, name: Fred 2, 4
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-list.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.