list

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

listAsigna variables como si fueran un array

Descripción

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

Parámetros

var

Una variable.

vars

Variables adicionales.

Valores devueltos

Devuelve el array asignado.

Historial de cambios

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.

Ejemplos

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

Ver también

  • each() - Devuelve cada par clave/valor de un array
  • array() - Crea un array
  • extract() - Importa las variables en la tabla de símbolos