Шаг 42.
Основы языка PHP.
Обход массивов. Конструкция foreach

    На этом шаге мы рассмотрим цикл foreach.

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


Рис.1. Общий вид конструкции foreach

    В этой конструкции мы видим три переменные, среди которых $massiv - это просматриваемый массив. Переменные $key и $value содержат, соответственно, ключ и значение. Итак, поясним ход работы этого оператора цикла на примере:

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

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


Рис.2. Результат работы скрипта

    В первой строке мы создаем массив из трех элементов. Заметьте, что индексация производится с помощью строк. Далее следует конструкция, которая начинается со слова foreach. Затем в круглых скобках помещается рассматриваемый массив, после которого записывается специальное слово as. После него следует пара ключ-значение, разделяемая оператором =>. Итак, на первой итерации переменной $key присваивается ключ первого элемента, а переменной $value - его значение. При следующей итерации в переменные $key и $value запишутся соответственно ключ и значение следующего элемента. И так далее, пока массив не будет пройден полностью.

    У вас может возникнуть вопрос о способе реализации этого цикла, так как механизм перемещения по массиву остается скрытым от программиста. Дело в том, что любой массив помимо ключей и значений имеет внутренний указатель (pointer) или курсор, с помощью которого можно узнать, какой элемент мы сейчас рассматриваем. Этим указателем, естественно, можно управлять, то есть переносить его от одного элемента к другому. Для работы с указателем применяются функции reset(), each(), list() и другие.

    На следующем шаге мы рассмотрим некоторые из перечисленных функций.




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