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

Переменная.

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

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

Примеры

Пример #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() и порядок указания индексовs

Порядок, в котором индексы массива будут употреблены функцией 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"

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

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