listAssigne des variables comme si elles étaient un tableau
&reftitle.description;
arraylistmixedvarmixedvars
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.
Seuls les tableaux et les objets qui implémentent ArrayAccess peuvent être déstructurés.
Les expressions list ne peuvent pas être complètement vides.
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.
À partir de PHP 7.1.0, list peut également contenir des clés explicites, permettant ainsi la
déstructuration de tableaux avec des clés non entières ou non séquentielles. Pour plus de détails sur
la déstructuration de tableaux, voir la section sur la déstructuration des tableaux.
Tenter d’accéder à une clé de tableau qui n’a pas été définie est
équivalent à accéder à toute autre variable non définie :
un message d’erreur de niveau E_WARNING
(E_NOTICE avant PHP 8.0.0) sera émis,
et le résultat sera &null;.
Tenter de déstructurer un scalaire affecte &null; à toutes les variables.
Tenter de déstructurer un objet qui n’implémente pas ArrayAccess est une erreur fatale.
&reftitle.parameters;
var
Une variable.
vars
Variables supplémentaires.
&reftitle.returnvalues;
Retourne le tableau assigné.
&reftitle.changelog;
&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.
&reftitle.examples;
Exemple avec list
]]>
Exemple d'utilisation de list
query("SELECT id, name FROM employees");
while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) {
echo "id: $id, name: $name\n";
}
?>
]]>
Utilisation d'un sous-list
]]>
&example.outputs;
L'ordre dans lequel les indices d'un tableau à traiter par
list sont définis est non pertinent.
list et l'ordre de définition des index
'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) :
string(1) "a"
["foo"]=>
string(1) "b"
[0]=>
string(1) "c"
[1]=>
string(1) "d"
}
string(1) "c"
string(1) "d"
string(1) "a"
]]>
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 &integer; et &string; est autorisé; Toutefois, les éléments
avec et sans clés ne peuvent pas être mélangés.
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";
]]>
&example.outputs;
&reftitle.seealso;
eacharrayextract