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>";
}
}
?>
С этой темой смотрят: