Шаг 46.
Основы языка PHP.
Обход массивов. Совместное использование функций reset(), each(), list()

    На этом шаге мы рассмотрим совместное использование указанных функций.

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

<?php
$closets = array("Петров" => "Майка", 
                 "Иванов" => "Кроссовки", 
                 "Сидоров" => "Шорты");
reset($closets);   // установка указателя на первый элемент
while (list($key, $value) = each($closets))
   {
    echo $key . " " . $value . "<br>";   // вывод элемента
   }
?>

Текст этой программы можно взять здесь.

    Результат выполнения программы вы можете увидеть на рисунке 1.


Рис.1. Результат выполнения программы

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

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

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

<?php
$closets = array("Петров" => "Майка", 
                 "Иванов" => "Кроссовки", 
                 "Сидоров" => "Шорты");
foreach($closets as $value)
   {
   echo $value . "<br>";   // вывод значения
   }
?>

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

    Со следующего шаге мы начнем рассматривать операторы работы с массивами.




Предыдущий шаг Содержание Следующий шаг