# list

(PHP 4, PHP 5, PHP 7, PHP 8)

list — Asignar variables como si fueran un array

### Descripción

list(mixed `$var1`, mixed `...$...` = ?): 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.

Advertencia

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.

Advertencia

La modificación del array durante la ejecución de list() (p.ej. usando `list($a, $b) = $b`) resultará en un comportamiento indefinido.

### Parámetros

`var1`

  Una variable.

### Valores devueltos

Devuelve el array asignado.

### Historial de cambios

Versión | Descripción
--- | ---
7.0.0 | El orden en el que se realizan las operaciones de asignación ha cambiado.
7.0.0 | Las expresiones de list() ya no pueden estar completamente vacías.
7.0.0 | Los strings ya no pueden ser desempaquetados.

### Ejemplos

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"

### Ver también

- each() - Devolver el par clave/valor actual de un array y avanzar el cursor del array
- array() - Crea un array
- extract() - Importar variables a la tabla de símbolos actual desde un array