(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.
varUna variable.
varsVariables 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 ejemplo anterior mostrará :
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 entero y string 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 ejemplo anterior mostrará :
id: 1, name: Tom id: 2, name: Fred 2, 4