Цикл перебора массивов foreach
В PHP4 появился еще один специальный тип цикла - foreach. Данный цикл предназначен специально для перебора массивов.
Синтаксис цикла foreach выглядит следующим образом:
foreach (массив as $ключ=>$значение) команды;
Здесь команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=>значениеоказывается в переменных $ключ и $значение. Приведем пример работы цикла foreach:
<?php
$names["Иванов"] = "Андрей";
$names["Петров"] = "Борис";
$names["Волков"] = "Сергей";
$names["Макаров"] = "Федор";
foreach ($names as $key => $value) {
echo "<b>$value $key</b><br>";
}
?>
Рассмотренный сценарий выводит:
Андрей Иванов
Борис Петров
Сергей Волков
Федор Макаров
У цикла foreach имеется и другая форма записи, которую следует применять, когда нас не интересует значение ключа очередного элемента. Выглядит она так:
foreach (массив as $значение)
команды;
В этом случае доступно лишь значение очередного элемента массива, но не его ключ. Это может быть полезно, например, для работы с массивами-списками:
<?php
$names[] = "Андрей";
$names[] = "Борис";
$names[] = "Сергей";
$names[] = "Федор";
foreach ($names as $value) {
echo "<b>$value</b><br>";
}
?>
Внимание: Цикл foreach оперирует не исходным массивом, а его копией. Это означает, что любые изменения, которые вносятся в массив, не могут быть "видны" из тела цикла. Что позволяет, например, в качестве массива использовать не только переменную, но и результат работы какой-нибудь функции, возвращающей массив (в этом случае функция будет вызвана всего один раз - до начала цикла, а затем работа будет производиться с копией возвращенного значения).