PHP скрипты

MySQL

Apache

phpMyADmin

8.8: list()

Главная Страница » Книги по PHP » Самоучитель PHP 5 для чайников с примерами » list()

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

Листинг 8.8. Работа конструкции list()

‹html›
‹head›
‹title›Работа конструкции list()‹/title›
‹/head›
‹body›
‹?php
$closets = array (0 => "Майка", 1 => "Кроссовки", 2 => "Шорты");
list ($thing_1, $thing_2, $thing_3) = $closets;
echo $thing_1; // выводит "Майка"
echo "‹br›";
echo $thing_2; // выводит "Кроссовки"
echo "‹br›";
echo $thing_3; // выводит "Шорты"
?›
‹/body›
‹/html›

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

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

Листинг 8.9. Обход массива посредством list(), each() и count()

‹html›
‹head›
‹title› Обход массива посредством list(), each() и count() ‹/title›
‹/head›
‹body›
‹?php
$closets =
array ("Летров"=>"Майка", "Иванов"=>"Кроссовки", "Сидоров"=>"Шорты");
reset($closets); // установка указателя на первый элемент
while (list($key, $value) = each($closets))
{
  echo $key . " " . $value . "‹br›"; // вывод элемента
}
?›
‹/body›
‹/html›

He сложно догадаться, что этот пример по своей сути представляет собой цикл fоreach. Итак, сначала мы устанавливаем указатель на первый элемент массива с помощью функции count(). Затем в цикле начинаем последовательно выводить значения элементов вместе с их ключами. Обратите внимание на логическое выражение оператора while. Функция each () возвращает массив с данными для вывода, а конструкция list() записывает их переменные $кеу и $value. Происходит это до тех пор, пока функция each() не возвратит пустой массив, что эквивалентно FALSE.

Именно эту сложную конструкцию заменяет цикл fоreach, который скрывает от программиста реальный ход работы программы и предоставляет удобный интерфейс. Обратите внимание, что оператор fоreach перед началом обхода тоже устанавливает указатель на первый элемент и не возвращает его обратно после завершения цикла.

Стоит отметить, что в конструкции fоreach по желанию значение ключа можно опустить. Тогда мы будем работать только со значениями элементов (листинг 8.10).

Листинг 8.10. Обход массива посредством конструкции foreach без ключа.

‹html›
‹head›
‹title› Обход массива посредством конструкции foreach без ключа ‹/title›
‹/head›
‹body›
‹?php
$closets =
аrrау ("Петров"=>"Майка", "Иванов"=>"Кроссовки", "Сидоров"=>"Шорты");
foreach ($closets as $value)
{
  echo $value . "‹br›"; // вывод значения
}
?›
‹/body›
‹/html›

В этом случае программа выведет слова Майка, Кроссовки, Шорты.

Поделиться с друзьями