Если у вас была возможность поработать с массивами, вы, вероятно, быстро поняли, что должен существовать хороший способ итерации по всем парам ключ/значение, содержащимся в массиве. Частичным решением может быть цикл for (), который можно использовать в сочетании с функцией count () (эта функция возвращает количество элементов массива) для прохождения по всем элементам, индексированным целочисленными индексами, как показано в листинге 2.7.
Листинг 2.7. Использование count () для итерации по массиву $myarray = array('php', 'is', 'cool'); for($i » 0; $i < count($myarray); $i++) { •echo "Значение с индексом $i равно: ($myarray[$i]} \n";
Несмотря на свою эффективность, приведенный код не будет работать с массивами, использующими строки в качестве индексов (или массивами, у которых целые ключи не последовательны). Правильный способ итерации по элементам массива предполагает использование оператора foreach ():
foreach( as [$key_var »>] $value_var) {
... код для работы с каждым индивидуальным элементом массива ... Здесь <аггау> представляет массив, по которому выполняется итерация, а каждая пара $key_var/$value_var указывает индивидуальную пару ключ/значение в текущей итерации. А вот как работает оператор foreach (): при вызове foreach (•) выполняет цикл, проходя по каждому элементу внутри <аггау>, сохраняя значение текущего элемента в переменной $value_var, а необязательное значение ключа — в $key_var. Эти переменные затем можно использовать внутри конструкции foreach (). Обратите внимание, что, несмотря на то, что пара $key_var/$value_var содержит текущее значение элемента массива, ее модификация не оказывает влияния на исходный массив. Чтобы изменить содержимое текущего элемента, можно обратиться к значению $value_var в операторе foreach () по ссылке (то есть, &$value_var). Давайте обратимся к предыдущему примеру, использующему функцию count () для итерации по массиву, только на этот раз применим оператор foreach (), как показано в листинге 2.8.
Листинг 2.8. Использование foreach () для итерации по массиву $myarray = array('php', 'is', 'cool'); /* Получить ключ и значение очередного элемента */ foreach($myarray as $key => $val) { echo "Значение с индексом $key равно: $val "; /* Извлекаем только значения элементов и игнорируем ключи */ foreach($myarray as $val) { echo "Значение: $val "; i ?>
В листинге 2.8 первый оператор foreach () работает идентично соответствующему циклу for () из предыдущего примера. Также отметим, что переменная $кеу не требуется, как показано во втором примере с foreach ().
НА ЗАМЕТКУ Как и для всех управляющих структур РНР, существуют альтернативы оператору foreach ( ) , как показано ниже:
as [$key_var =>] $val): ?> <!-- не интерпретируемые данные //—>