(PHP 4, PHP 5, PHP 7, PHP 8)
list — Asigna variables como si fueran un array
Al igual que array(), list() no es una
función real, sino un elemento de lenguaje, que permite agrupar
las variables varname
, ...
en forma de array, para asignarlas en una sola línea.
Las strings no pueden ser desestructuradas y las expresiones
list() no pueden estar completamente vacías.
Nota:
Antes de PHP 7.1.0, list() solo funciona con arrays de índices numéricos y asume que el índice numérico comienza en 0.
A partir de PHP 7.1.0, list() también puede contener claves explícitas, permitiendo así la desestructuración de arrays con claves no enteras o no secuenciales. Para más detalles sobre la desestructuración de arrays, ver la sección sobre la desestructuración de arrays.
var
Una variable.
vars
Variables adicionales.
Devuelve el array asignado.
Versión | Descripción |
---|---|
7.3.0 | Se añadió el soporte para la asignación por referencia en la desestructuración de arrays. |
7.1.0 | Ahora es posible especificar claves en list(). Esto permite desestructurar arrays con claves no enteras o no secuenciales. |
Ejemplo #1 Ejemplo con list()
<?php
$info = array('coffee', 'brown', 'caffeine');
// Lista todas las variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
// Lista algunas variables
list($drink, , $power) = $info;
echo "$drink has $power.\n";
// O bien, solo usamos el tercero
list( , , $power) = $info;
echo "I need $power!\n";
// list() no funciona con strings
list($bar) = "abcde";
var_dump($bar); // NULL
?>
Ejemplo #2 Ejemplo de uso 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";
}
?>
Ejemplo #3 Uso de un sub-list()
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
El resultado del ejemplo sería:
int(1) int(2) int(3)
El orden en el que se definen los índices de un array a procesar por list() no es relevante.
Ejemplo #4 list() y el orden de definición de los índices
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
Dado el siguiente resultado (note el orden de los elementos comparados y en qué orden se escribieron en la sintaxis 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"
Ejemplo #5 list() con claves
A partir de PHP 7.1.0 list() ahora también puede contener claves explícitas, que pueden ser dadas como expresiones arbitrarias. La mezcla de claves entier y chaîne de caractères está permitida; Sin embargo, los elementos con y sin claves no pueden mezclarse.
<?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";
El resultado del ejemplo sería:
id: 1, name: Tom id: 2, name: Fred 2, 4