(PHP 4, PHP 5, PHP 7, PHP 8)
list — Assigne des variables comme si elles étaient un tableau
Tout comme array(), list() n'est pas une
véritable fonction, mais un élément de langage, qui permet de rassembler
les variables varname
, ...
sous forme de tableau, pour les assigner en une seule ligne.
Les chaînes de caractères ne peuvent pas être déstructurées et les expressions
list() ne peuvent pas être entièrement vide.
Note:
Antérieur à PHP 7.1.0, list() fonctionne uniquement sur un tableau d'indice numérique et suppose que l'indice numérique commence à 0.
var
Une variable.
vars
Variables supplémentaires.
Retourne le tableau assigné.
Version | Description |
---|---|
7.3.0 | Le support pour l'assignement par référence dans la déstructuration de tableau a été ajouté. |
7.1.0 | Il est maintenant possible de spécifier les clés dans la list(). Cela permet de déstructurer des tableaux avec des clés non-entières ou non séquentielles. |
Exemple #1 Exemple avec list()
<?php
$info = array('coffee', 'brown', 'caffeine');
// Liste toutes les variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
// Liste certaines variables
list($drink, , $power) = $info;
echo "$drink has $power.\n";
// Ou bien, n'utilisons que le troisième
list( , , $power) = $info;
echo "I need $power!\n";
// list() ne fonctionne pas avec les chaînes de caractères
list($bar) = "abcde";
var_dump($bar); // NULL
?>
Exemple #2 Exemple d'utilisation de 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";
}
?>
Exemple #3 Utilisation d'un sous-list()
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1) int(2) int(3)
Exemple #4 list() et l'ordre de définition des index
L'ordre dans lequel les indices d'un tableau à traiter par list() sont définis est non pertinent.
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
Étant donné la sortie suivante (notez l'ordre des éléments comparés et dans quel ordre ils ont été écrits dans la syntaxe de la list()) :
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"
Exemple #5 list() avec des clés
À partir de PHP 7.1.0 list() peut maintenant contenir également des clés explicites, qui peuvent être donnés comme des expressions arbitraires. Le mixage des clés entier et chaîne de caractères est autorisé; Toutefois, les éléments avec et sans clés ne peuvent pas être mélangés.
<?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";
L'exemple ci-dessus va afficher :
id: 1, name: Tom id: 2, name: Fred 2, 4