Array Funktionen
PHP Manual

list

(PHP 4, PHP 5, PHP 7)

listWeist Variablen zu, als wären sie ein Array

Beschreibung

array list ( mixed $var1 [, mixed $... ] )

Wie array() ist auch dies keine wirkliche Funktion, sondern ein Sprachkonstrukt. list() wird verwendet, um eine Liste von Variablen mit einer Operation zuzuweisen.

Hinweis:

list() funktioniert nur bei numerischen Arrays und basiert auf der Annahme, dass die numerischen Indizes bei 0 beginnen.

Warnung

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.

Warnung

Die Veränderung des Array während der Ausführung von list() (z.B. durch list($a, $b) = $b), hat undefiniertes Verhalten zur Folge.

Parameter-Liste

var1

Eine Variable.

Rückgabewerte

Gibt das zugewiesene Array zurück.

Changelog

Version Beschreibung
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(23));

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(=> 'a''foo' => 'b'=> '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"

Siehe auch


Array Funktionen
PHP Manual