(PHP 4, PHP 5, PHP 7)
list — Asignar variables como si fueran un array
Al igual que array(), no es realmente una función, es un constructor del lenguaje. list() se utiliza para asignar una lista de variables en una sola operación.
Nota:
list() solo funciona con arrays numéricos y supone que los índices numéricos empiezan en 0.
En PHP 5, list() asigna los valores empezando desde el parámetro más a la derecha. En PHP 7, list() empieza desde el parámetro más a la izquierda.
Si se emplean variables simples, esto no debería ser un problema. Pero se en emplean arrays con índices, normalmente se espera que el orden de los índices sea el mismo que el escrito en list(), de izquierda a derecha, no siendo este el caso en PHP 5, ya que se asignan en orden inverso.
En términos generales, se aconseja evitar depender de un orden específico de operación debido a que este podría cambiar de nuevo en el futuro.
La modificación del array durante la ejecución de list() (p.ej. usando list($a, $b) = $b) resultará en un comportamiento indefinido.
var1
Una variable.
Devuelve el array asignado.
Ejemplo #1 Ejemplos de list()
<?php
$info = array('café', 'marrón', 'cafeína');
// Enumerar todas las variables
list($bebida, $color, $energía) = $info;
echo "El $bebida es $color y la $energía lo hace especial.\n";
// Enumerar algunas de ellas
list($bebida, , $energía) = $info;
echo "El $bebida tiene $energía.\n";
// U omitir solo la tercera
list( , , $energía) = $info;
echo "Necesito $energía!\n";
// list() no funciona con cadenas
list($bar) = "abcde";
var_dump($bar); // NULL
?>
Ejemplo #2 Un ejemplo del uso de list()
<table>
<tr>
<th>Nombre del empleado</th>
<th>Salario</th>
</tr>
<?php
$resultado = $pdo->query("SELECT id, nombre, salario FROM empleados");
while (list($id, $nombre, $salario) = $resultado->fetch(PDO::FETCH_NUM)) {
echo " <tr>\n" .
" <td><a href=\"info.php?id=$id\">$nombre</a></td>\n" .
" <td>$salario</td>\n" .
" </tr>\n";
}
?>
</table>
Ejemplo #3 Empleo de list() anidados
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1) int(2) int(3)
Ejemplo #4 Uso de list() con índices de array
<?php
$info = array('café', 'marrón', 'cafeína');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
Muestra la siguiente salida (nótese el orden de los elementos comparado con el orden escrito en la sintaxis de list()):
array(3) { [2]=> string(8) "cafeína" [1]=> string(7) "marrón" [0]=> string(5) "café" }
Ejemplo #5 list() y orden de definiciones de índices
El orden en el que están definidos los índices de los arrays que consume list() es irrelevante.
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
Da el siguiente resultado (observe el orden de los elementos comparado con el orden en el que están escritos en la sintaxis de 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"