Цикл "for" в PHP
Изучите цикл for в PHP: инициализация, условие и инкремент — подсчёт, шаги, перебор массивов, вложенные циклы, break и continue.
В PHP оператор for — это управляющая конструкция, которая выполняет блок кода заранее известное количество раз. Она используется тогда, когда количество итераций фиксировано и предсказуемо: вывод чисел от 1 до 10, построение HTML-таблицы из N строк или перебор индексированного массива по позиции.
В этой главе рассматриваются три части цикла for, порядок их выполнения и практические паттерны: счёт вверх и вниз, нестандартный шаг, перебор массивов, вложенные циклы, ключевые слова break и continue.
Синтаксис
Цикл for состоит из трёх выражений в скобках, разделённых точкой с запятой, после которых идёт тело цикла в фигурных скобках:
for (initialization; condition; increment) {
// code to be executed on each pass
}Три выражения выполняются в определённом порядке:
- Инициализация выполняется один раз перед запуском цикла — обычно задаёт начальное значение счётчика.
- Условие проверяется перед каждой итерацией. Пока оно равно
true, тело выполняется; когда становитсяfalse, цикл завершается. - Инкремент выполняется после каждой итерации, непосредственно перед следующей проверкой условия — обычно увеличивает счётчик.
Инициализация
Инициализация задаёт начальное значение счётчика. Она выполняется один раз в самом начале. Чтобы начать счёт с 1:
$counter = 1;Условие
Условие определяет, когда остановиться. Цикл продолжает работать пока условие истинно. Чтобы цикл шёл, пока счётчик не превысит 10:
$counter <= 10;Если условие оказывается false при первой проверке, тело цикла не выполняется ни разу.
Инкремент
Инкремент изменяет счётчик после каждого прохода, чтобы цикл рано или поздно завершился. Чтобы прибавлять 1 при каждой итерации:
$counter++;Если инкремент никогда не делает условие ложным, возникает бесконечный цикл. Убедитесь, что счётчик движется к условию остановки.
Полный пример с подсчётом
Объединив три части вместе, этот цикл выводит значение $counter на каждом проходе — от 1 до 10:
Приведённый код выводит:
1 2 3 4 5 6 7 8 9 10 (Без . " " оператор echo вывел бы цифры слитно — 12345678910 — так как echo не добавляет разделителей между значениями.)
Счёт в обратном порядке и нестандартный шаг
Инкремент — это просто выражение, поэтому он может уменьшать счётчик или двигаться с шагом, отличным от 1. Чтобы считать в обратном порядке от 10 до 1, начните с большего значения, остановитесь на 1 и используйте $i--:
<?php
for ($i = 10; $i >= 1; $i--) {
echo $i . " ";
}
?>Чтобы двигаться с шагом 2 (вывод чётных чисел до 10), используйте $i += 2:
<?php
for ($i = 2; $i <= 10; $i += 2) {
echo $i . " "; // 2 4 6 8 10
}
?>Перебор массива
Цикл for позволяет обходить индексированный array по позиции. В условии используется count(), чтобы узнать количество элементов, а $i служит индексом массива:
Приведённый код выводит:
apple
banana
cherryОбратите внимание: цикл начинается с 0 (массивы в PHP индексируются с нуля), а условие — $i < count($fruits), то есть < вместо <=, потому что последний допустимый индекс равен count - 1.
Для массивов — особенно ассоциативных, где ключи не являются последовательными целыми числами — цикл foreach обычно понятнее и безопаснее, чем for, поскольку не требует управления индексом вручную.
Вложенные циклы
Один цикл for можно поместить внутрь другого. Внутренний цикл выполняется полностью на каждом проходе внешнего. Это распространено при работе с сетками, таблицами и выводом типа таблицы умножения:
<?php
for ($row = 1; $row <= 3; $row++) {
for ($col = 1; $col <= 3; $col++) {
echo $row * $col . "\t";
}
echo "\n";
}
?>Этот код выводит таблицу умножения 3×3:
1 2 3
2 4 6
3 6 9 Прерывание и пропуск итераций
Два ключевых слова дают более тонкий контроль внутри тела цикла:
breakнемедленно останавливает цикл и продолжает выполнение кода после него.continueпропускает остаток текущей итерации и переходит к следующей (инкремент при этом всё равно выполняется).
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i == 4) {
continue; // skip 4
}
if ($i == 7) {
break; // stop entirely at 7
}
echo $i . " ";
}
?>Приведённый код выводит:
1 2 3 5 6 4 пропускается благодаря continue, а цикл останавливается до вывода 7 из-за break. Подробнее читайте в главе break и continue.
Когда использовать for, а когда другие циклы
- Используйте
for, когда количество итераций известно заранее или нужен счётчик / индекс. - Используйте
foreachдля перебора элементов массива или object без управления индексом. - Используйте
while, когда цикл выполняется до изменения некоторого условия и нет естественного счётчика. - Используйте
do...while, когда тело должно выполниться хотя бы один раз до проверки условия.
Заключение
Цикл for — важнейшая управляющая конструкция PHP для повторного выполнения кода заранее известное количество раз. Освойте его три части — инициализацию, условие и инкремент — и вы сможете считать вверх и вниз, двигаться с любым шагом, обходить массивы по индексу и вкладывать циклы для построения сеток. Для поэлементного перебора массива предпочтительнее foreach; для неопределённого количества повторений используйте while.