Функции для работы с массивами
PHP Manual

list

(PHP 4, PHP 5, PHP 7)

listПрисваивает переменным из списка значения подобно массиву

Описание

array list ( mixed $var1 [, mixed $... ] )

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

Замечание:

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

Внимание

В PHP 5 list() присваивает значения начиная с самого правого. В PHP 7 list() - с самого левого.

Если вы используете обычные переменные, можете не думать об этом, но, если вы используете массивы с индексами, вы ожидаете, что порядок элементов в массиве будет ровно таким, как вы его определили в list(), слева направо, но в PHP 5 вы получите обратный порядок.

Вообще говоря, желательно не полагаться на конкретный порядок операций, так как будущем это поведение может быть изменено.

Внимание

Изменение массива через list() (то есть так list($a, $b) = $b) приведет к неопределенному поведению.

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

var1

Переменная.

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

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

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

Версия Описание
7.0.0 Изменен порядок операций присвоения.
7.0.0 Выражение list() больше не может быть полностью пустым.
7.0.0 Больше нельзя разбирать строки с помощью этой функции.

Примеры

Пример #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()

<table>
 <tr>
  <th>Имя работника</th>
  <th>Зарплата</th>
 </tr>

<?php
$result 
$pdo->query("SELECT id, name, salary FROM employees");
while (list(
$id$name$salary) = $result->fetch(PDO::FETCH_NUM)) {
    echo 
" <tr>\n" .
          
"  <td><a href=\"info.php?id=$id\">$name</a></td>\n" .
          
"  <td>$salary</td>\n" .
          
" </tr>\n";
}

?>

</table>

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

<?php

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

var_dump($a$b$c);

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

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

<?php

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

list(
$a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>

Выведет (сравните порядок исходных элементов с порядком, в котором они были перезаписаны list()):

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

array(3) {
  [0]=>
  string(6) "кофе"
  [1]=>
  string(5) "коричневый"
  [2]=>
  string(8) "кофеин"
}

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

array(3) {
  [2]=>
  string(8) "кофеин"
  [1]=>
  string(5) "коричневый"
  [0]=>
  string(6) "кофе"
}

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

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

<?php
$foo 
= array(=> 'a''foo' => 'b'=> '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"

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


Функции для работы с массивами
PHP Manual