list

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

listCria variáveis como se fossem arrays

Descrição

list(mixed $var, mixed ...$vars = ?): array

Assim como array(), não é exatamente uma função, e sim uma construção da própria linguagem. list() é usada para criar uma lista de variáveis em apenas uma operação. String não pode ser desempacotada e expressões como list() não pode ser completamente vazia.

Note:

Antes, PHP 7.1.0, list() apenas funcionava em arrays numéricos e assume o índice numérico começando em 0.

Parâmetros

var

A variável.

vars

Outras variaveis.

Valor Retornado

Retorna o array atribuído.

Registro de Alterações

Versão Descrição
7.3.0 Foi adicionado suporte para atribuições de referência na desestruturação de array.
7.1.0 Agora é possível especificar chaves em list(). Isso habilita desestruturar os arrays com chaves não-integer e não-sequencial.

Exemplos

Example #1 Exemplo da list()

<?php

$info = array('Café', 'marrom', 'cafeína');

// Listando todas as variáveis
list($bebida, $cor, $substancia) = $info;
echo "$bebida é $cor e $substancia o faz especial.\n";

// Listando apenas alguns deles
list($bebida, , $substancia) = $info;
echo "$bebida tem $substancia.\n";

// Ou ignoramos os primeiros valores para conseguir apenas o último
list( , , $substancia) = $info;
echo "I need $substancia!\n";

// list() não funciona com strings
list($bar) = "abcde";
var_dump($bar); // NULL
?>

Example #2 Exemplo da list()

<?php
$resultado = $pdo->query("SELECT id, nome FROM empregados");
while (list($id, $nome) = $resultado->fetch(PDO::FETCH_NUM)) {
    echo "id: $id, nome: $nome\n";
}
?>

Example #3 list() e ordem das definições de índice

<?php

list($a, list($b, $c)) = array(1, array(2, 3));

var_dump($a, $b, $c);

?>
int(1)
int(2)
int(3)

Example #4 Usando list() com índices de array

A ordem em que são definidos os índices do array para ser consumido pela list() é irrelevante.

<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);

O retorno desse script é o seguinte (note a ordem dos elementos em comparação com a ordem que foram escritos com a sintaxe 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"

Example #5 list() com chaves

A partir do PHP 7.1.0 list() também pode agora conter chaves explícitas, na qual pode ser dada expressões arbitrárias. A mistura chaves de integer e string é permitida; no entanto, elementos com e sem chaves não podem ser misturados.

<?php
$dados = [
    ["id" => 1, "nome" => 'Mario'],
    ["id" => 2, "nome" => 'Frederico'],
];
foreach ($dados as ["id" => $id, "nome" => $nome]) {
    echo "id: $id, nome: $nome\n";
}
echo PHP_EOL;
list(1 => $segundo, 3 => $quarto) = [1, 2, 3, 4];
echo "$segundo, $quarto\n";

O exemplo acima produzirá:

id: 1, name: Mario
id: 2, name: Frederico

2, 4

Veja Também

  • each() - Retorna o par atual de chave e valor de um array e avança o seu cursor
  • array() - Cria um array
  • extract() - Importa variáveis para a tabela de símbolos a partir de um array