🔁
IT и код

Цикл по массиву в PHP

⏱ 3 мин чтения👁 …Обновлено 14 июля 2026ИнфоЗал · База знаний

Циклы — основа любого кода: они повторяют действия, чтобы не писать одно и то же вручную. В PHP несколько видов циклов; разберём, какой когда использовать, на понятных примерах.

Цикл повторяет действие, пока условие истинно.
Цикл повторяет блок кода, пока выполняется заданное условие.

Цикл for — когда известно число повторов

Используется, когда вы знаете, сколько раз повторить:

for ($i = 1; $i <= 5; $i++) {
    echo $i;   // выведет 1 2 3 4 5
}

Три части: начальное значение, условие продолжения и шаг. Классика для перебора по счётчику.

Цикл foreach — для массивов

Самый частый в PHP: перебирает элементы массива без счётчика:

$fruits = ['яблоко', 'банан', 'груша'];
foreach ($fruits as $fruit) {
    echo $fruit;
}

Удобно и безопасно проходит по всем элементам. Для ключей и значений: foreach ($arr as $key => $value).

Простое правило выбора: перебираете массив или результат запроса к базе — foreach (почти всегда именно он). Нужно повторить действие фиксированное число раз — for. Повторяете, пока выполняется условие, и число заранее неизвестно — while.

Цикл while — пока условие истинно

$n = 1;
while ($n <= 5) {
    echo $n;
    $n++;   // важно менять условие, иначе цикл вечный
}

Подходит, когда неизвестно заранее, сколько будет повторов — например, чтение данных, пока они есть.

Главная опасность — бесконечный цикл

Если условие никогда не станет ложным (забыли увеличить счётчик), цикл будет крутиться вечно и «повесит» скрипт. Всегда следите, чтобы внутри цикла что-то приближало его к завершению. Это самая частая ошибка с while.

Частые ошибки

  • Забывают менять условие в while — получают бесконечный цикл.
  • Используют for со счётчиком там, где проще foreach.
  • Выходят за границы массива, перебирая по индексу вручную.

Что запомнить

Для перебора массивов используйте foreach — в PHP он основной. Для фиксированного числа повторов — for, для повторов по условию с неизвестным числом итераций — while. Главное — следить, чтобы цикл мог завершиться, иначе получите бесконечный цикл, который повесит скрипт.

Коротко: вопросы и ответы

Какой цикл выбрать для массива? foreach — он создан именно для этого.

Чем for отличается от while? for удобен при известном числе повторов, while — когда оно заранее неизвестно.

Почему скрипт завис? Вероятно, бесконечный цикл — условие никогда не становится ложным.

Управление циклом: break и continue

break досрочно выходит из цикла (нашли нужное — дальше искать незачем), а continue пропускает текущую итерацию и переходит к следующей (например, пропустить пустые значения):

foreach ($items as $item) {
    if ($item == '') continue;  // пропустить пустое
    if ($item == 'stop') break; // выйти из цикла
    echo $item;
}

Есть ли ещё циклы? Да, do...while похож на while, но выполняет тело хотя бы один раз (условие проверяется в конце).

Как перебрать массив с ключами? foreach ($arr as $key => $value) даёт и ключ, и значение.

Небольшой совет по производительности

Не выполняйте внутри цикла тяжёлые операции, которые можно сделать один раз до него, — например, повторный запрос к базе на каждой итерации. Готовьте данные заранее, а в цикле только перебирайте их. Это частая причина «тормозящих» скриптов на больших массивах.

Что быстрее — for или foreach? Для массивов разница обычно несущественна; выбирайте по читаемости, а foreach ещё и безопаснее от выхода за границы.

Была ли статья полезной?
Реклама

Комментарии