list

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

listПрисваивает переменным значения похожим на массивы синтаксисом

Описание

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

Как и конструкция array(), это не функция, а языковая конструкция. Конструкцией list() пользуются, чтобы присваивать списку переменных значения за одну операцию. Строки нельзя распаковать, а выражения list() нельзя вызывать без аргументов.

Замечание:

До PHP 7.1.0 конструкция list() работала только с индексированными массивами и принимала числовые индексы начиная с 0.

Список параметров

var

Переменная.

vars

Дополнительные переменные.

Возвращаемые значения

Возвращает присвоенный массив.

Список изменений

Версия Описание
7.3.0 Добавлена поддержка присвоения по ссылкам при деструктурировании массива.
7.1.0 Теперь в конструкции list() разрешено задавать ключи. Это разрешает разыменовывать ассоциативные массивы и массивы с индексами не по порядку.

Примеры

Пример #1 Примеры использования конструкции list()

<?php

$info
= array('кофе', 'коричневый', 'кофеин');

// Составить список всех переменных
list($drink, $color, $power) = $info;
echo
"$drink - $color, а $power делает его особенным.\n";

// Составить список только некоторых из них
list($drink, , $power) = $info;
echo
$drink есть $power.\n";

// Или пропустить все, кроме третьей
list( , , $power) = $info;
echo
"Мне нужен $power!\n";

// Конструкция list() не работает со строками
list($bar) = "abcde";
var_dump($bar); // NULL
?>

Пример #2 Пример использования конструкции 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";
}
?>

Пример #3 Использование list() с индексами массивов

<?php

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

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

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

Пример #4 Конструкция list() и порядок указания индексов

Порядок определения индексов в массиве, с которым будет работать конструкция list(), неважен.

<?php

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

Даёт такой вывод (обратите внимание на порядок, в котором элементы сравнивались, и в каком порядке элементы записаны в синтаксисе 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"

Пример #5 list() с ключами

Начиная с PHP 7.1.0 конструкции list() разрешено содержать явные ключи, которые указывают как произвольные выражения. Допустимо смешивать строковые и целочисленные ключи; однако элементы с ключами и без ключей смешивать нельзя.

<?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";

Результат выполнения приведённого примера:

id: 1, name: Tom
id: 2, name: Fred

2, 4

Смотрите также

  • each() - Возвращает текущую пару ключа и значения массива и сдвигает указатель на одну позицию вперёд
  • array() - Создаёт массив
  • extract() - Импортирует переменные массива в текущую таблицу символов