На втором месте по частоте использования, после условного оператора, находятся циклы. Цикл позволяет повторить определенное (и даже не определенное — когда работа цикла зависит от условия) количество раз какие-нибудь операторы. Данные операторы называются телом цикла — они будут «крутиться» в цикле. Проход цикла называется итерацией.
Как и C, PHP поддерживает три вида циклов:
— Цикл с предусловием (while).- Цикл с постусловием (do-while).
— Цикл со счетчиком (for).
Цикл с предусловием While
Принцип работы цикла с предусловием:
— Вычисляется значение логического выражения.
— Если значение истинно, выполняется тело цикла, в противном случае — переходим на следующий за циклом оператор.
Синтаксис цикла с предусловием выглядит следующим образом:
while ( логическое выражение )
инструкция;
В данном случае телом цикла является «инструкция». Обычно тело цикла состоит из большего числа операторов. Простейший пример цикла:
Данная программа выведет строку 12345678910. Обратите внимание на последовательность выполнения операций условия $i++ < 10. Сначала проверяется условие, а только потом увеличивается значение переменной. Если же мы поставим операцию инкремента перед переменной (++$i
Данный сценарий выведет строку 0123456789. Нам же нужна строка 12345678910, поэтому нужно обеспечить увеличение счетчика при проверке логического выражения:
Welcome home! Hello
Вложенные циклы
Каждый цикл может содержать в своем теле несколько циклов. Каждый из этих циклов называется вложенным циклом. Вкладываться может неограниченное число циклов, причем все они могут быть разного типа — while, do или for. Рассмотрим следующий код:
for ($1=0; $К10; $I++) {echo «$I\n»;for ($J=0; $J
В этом примере после второй итерации работа цикла будет прервана и программа выведет строки:
Итерация 1
Итерация 2
Если же вместо оператора break использовать оператор continue, будет прервана работа только третьей итерации и мы получим вывод:
Итерация 1Итерация 2Итерация 4Итерация 5Итерация 6Итерация 7Итерация 8Итерация 9
Итерация 10
Предположим, что у нас есть вложенные циклы, например,
for (…) { for (…) { for (…) }
}
Нам нужно прервать работу определенного цикла, например, первого. Тогда как оператор break находится в теле третьего. В этом случае можно передать функции break параметр — номер цикла, например, break(l) Нумерация циклов начинается с единицы.
Цикл перебора массивов foreach
В версии PHP4 появился еще один вид цикла — foreach. Данный цикл предназначен специально для перебора массивов.
Синтаксис данного цикла таков:
foreach (массив as $ключ=>$значение) операторы;
Операторы, содержащиеся в теле цикла, будут выполнены для каждого элемента массива. Переменная $ключ будет содержать имя ключа элемента, а переменная $ значение — значение элемента.
Следующий пример отобразит значение массива SGLOBALS, содержащего глобальные переменные (будут выведены как имена переменных, так и их значения):
Примечание.
Массив — это упорядоченный набор данных. Каждый элемент массива имеет индекс или ключ. Ключ служит для однозначной идентификации элемента массива. В одном массиве не может быть двух элементов с одинаковыми ключами.
В PHP есть один очень полезный стандартный массив $GLOBALS. Ключом данного массива является имя переменной, а значением элемента массива — значение переменной. Об этом важном массиве мы еще не раз поговорим в этой книге.