PHP: Цикл for
Цикл for
Синтаксис цикла for
выглядит следующим образом:
Данный цикл состоит из ключевого слова for
, за которым следуют круглые скобки, содержащие внутри три выражения, разделенных точками с запятой. Он имеет следующий порядок выполнения:
- В начале цикла выполняется инициализирующее выражение, оно всегда вычисляется (выполняется) только один раз в самом начале.
- Далее следует условное выражение. Перед началом каждой итерации вычисляется значение условного выражения (условие выполнения), если оно принимает значение TRUE, то тело цикла выполняется, если оно принимает значение
FALSE
, выполнение цикла завершается. Если при первой проверке условие оказывается ложным, тело цикла не выполнится ни разу. - В самом конце, после выполнения действий в теле цикла обрабатывается последнее выражение (следующее выражение после условия). В данном случае это инкрементирующее выражение - оно увеличивает с помощью инкремента значение переменной-счетчика.
Простой пример цикла for
:
<?php for ($k = 1; $k <= 10; $k++) { echo "$k "; } ?>
На самом деле цикл for
является почти универсальным, поскольку он допускает самые разные варианты своего применения.
Цикл for без частей заголовка
Каждое из выражений в заголовке цикла for
может отсутствовать.
Если инициализация не нужна или происходит в другом месте, инициализирующее выражение не нужно. Перепишем немного предыдущий пример:
<?php $k = 1; for (; $k <= 10; $k++) { echo "$k "; } ?>
Обратите внимание, символ точки с запятой обязателен, так как означает отсутствующее выражение. Отсутствие выражения условия эквивалентно расположению в условии значения TRUE
.
<?php for ($k = 1;/* нет условия */; $k++) { echo "$k "; } // Это эквивалентно следующему коду for ($k = 1; true; $k++) { echo "$k "; } ?>
В этом случае цикл будет выполняться бесконечно. Если отсутствует инкрементирующее выражение, то оно должно быть в теле цикла иначе цикл будет выполняться бесконечно.
<?php for ($k = 1; $k <= 10; /* нет выражения */) { echo "$k "; // значение переменной $k должно изменяться в теле цикла // иначе он не завершится $k++; } // можно убрать все выражения, получив бесконечный цикл for (;;) { //... } ?>
Не стоит забывать о том, что любое из трех выражений или все сразу можно опустить, но разделительные точки с запятой (;
) следует ставить всегда.
Несколько выражений в заголовке цикла for
В заголовке цикла for
каждое выражение разделенное точкой с запятой может содержать по несколько выражений, разделенных запятыми. Поэтому можно использовать выражения любой сложности.
<?php for ($bar = 10, $foo = 1; $foo <= 10; $bar--, $foo++) { echo "\$foo: $foo \$bar: $bar
"; } ?>
Если в условии выполнения используется несколько выражений, разделенных запятыми, то они вычисляются все, но результат берется из последнего.
<?php // не выполнится так как последнее выражение false for ($k = 1; $k <= 10, false; $k++) { echo "$k "; } ?>
Вложенные циклы
Так же как и условные операторы, циклы могут быть вложенными. Простой пример с одним уровнем вложенности:
<?php for ($i = 0; $i < 4; $i++) { echo "Внешний цикл.<br>"; for ($j = 0; $j < 2; $j++) { echo "Вложенный цикл.<br>"; } } ?>
С этой темой смотрят: