Menu

Цикл for в PHP: синтаксис, массивы, break и continue

for ($i = 0; $i < 10; $i++) { ... } выполняет блок заданное число раз: начальное значение, условие, которое проверяется перед каждым проходом, и шаг. Обход массива по индексу, обратный отсчёт, вложенные циклы, break и continue.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

for ($i = 0; $i < 5; $i++) { ... } выполняет блок фиксированное число раз. Три части это начало ($i = 0, выполняется один раз), условие ($i < 5, проверяется перед каждым проходом) и шаг ($i++, выполняется после каждого прохода). Цикл заканчивается, как только условие становится ложным.

$i существует и после цикла и хранит значение, при котором условие стало ложным (6). У переменных цикла в PHP нет блочной области видимости.

Обход массива по индексу

Для списка с ключами 0, 1, 2 ... счётчик служит и индексом. Сначала сохраните count() в переменную, чтобы она не вызывалась на каждом проходе.

Первая часть может содержать несколько выражений через запятую, так $n = count($fruits) задаётся один раз. Когда нужно только каждое значение (а не его соседи), foreach короче и работает также с массивами, ключи которых не идут от 0 до n - 1.

Обратный отсчёт и шаг больше 1

Шагом может быть любое выражение: $i-- для обратного отсчёта, $i += 2 для каждого второго числа, $i *= 2 для степеней двойки.

range('a', 'h') создаёт массив ['a', 'b', ... 'h']. С range(1, 10) и foreach получается тот же счёт, что и в цикле for, но ценой создания всего массива заранее.

break и continue

break сразу завершает цикл. continue пропускает остаток текущего прохода и переходит к шагу и следующей проверке условия.

У второго цикла пустое условие, а это значит "всегда истинно", поэтому он работает до break. Во вложенных циклах break 2 и continue 2 действуют на внешний цикл, как показывает следующий пример.

Вложенные циклы for: таблица умножения

Цикл внутри цикла полностью выполняет внутренний цикл на каждом проходе внешнего. Здесь вывод это HTML, поэтому вкладка Page показывает настоящую таблицу.

Поменяйте $size на 12 и запустите снова. Форма for (...): и endfor; это альтернативный синтаксис, который сохраняет читаемость циклов между HTML-тегами. Та же таблица в виде простого текста и с break 2, чтобы остановить оба цикла:

Частые ошибки: на единицу больше и бесконечный цикл

Две классические ошибки for: <= вместе с count() читает элемент за концом массива, что PHP сообщает как Warning: Undefined array key 3 и считает null; а шаг, который не приближает счётчик к концу ($i-- вместо $i++), оставляет условие истинным навсегда.

Для циклов, длину которых нельзя знать заранее, например чтения до конца файла, лучше подходит цикл while.

Часто задаваемые вопросы

Как обойти массив по индексу в PHP?

Для списка с ключами 0, 1, 2 используйте for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; }. В большинстве кода проще foreach ($arr as $i => $value): он даёт тот же индекс и работает, даже когда ключи не идут от 0 до n минус 1.

Как выйти из цикла for в PHP?

break; сразу покидает цикл. Во вложенных циклах break 2; выходит из внутреннего цикла и из того, что вокруг него. continue; пропускает остаток текущего прохода и переходит к следующему.

Как сделать обратный отсчёт циклом for в PHP?

Начните с большого значения, сравнивайте через >= и уменьшайте: for ($i = 10; $i >= 1; $i--) { echo $i; }. Для шага, отличного от единицы, измените третью часть, например $i += 2 или $i -= 5.

Когда использовать for вместо foreach в PHP?

Используйте for, когда что-то считаете (повторить 5 раз, числа от 1 до 100, каждый второй элемент) или нужен следующий либо предыдущий элемент по индексу. Используйте foreach, чтобы пройти каждый элемент массива, особенно ассоциативного, где числового индекса нет.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ