list
(PHP 4, PHP 5, PHP 7, PHP 8)
list — Cria variáveis como se fossem arrays
Descrição
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