Урок 8: Циклы в PHP (for, while, do-while)

На восьмом уроке мы погрузимся в одну из самых важных тем программирования, это циклы. Если вы мечтаете автоматизировать рутинные задачи, обрабатывать массивы данных или создавать сложные алгоритмы, без циклов не обойтись. В этом уроке я подробно расскажу о циклах forwhile и do-while, приведу множество примеров и задач для закрепления материала.

Что такое циклы?

Представьте, что вам нужно вывести числа от 1 до 100. Писать 100 строк кода с echoне самое разумное решение. Здесь на помощь приходят циклы. Это конструкции, которые позволяют повторять выполнение кода многократно, пока выполняется заданное условие. В PHP есть три основных типа циклов:

  1. for
  2. while
  3. do-while

Каждый из них имеет свои особенности. Разберемся по порядку.

Цикл for

Цикл for идеален, когда вы заранее знаете, сколько раз нужно выполнить код. Например, для перебора массива фиксированной длины или генерации последовательности чисел.

Синтаксис цикла for

for (инициализация; условие; изменение) {
    // Тело цикла
}
  • Инициализация: задаем начальное значение переменной-счетчика.
  • Условие: проверка перед каждой итерацией. Если true, цикл выполняется.
  • Изменение: обновление счетчика после каждой итерации (например, инкремент).

Пример: Вывод чисел от 1 до 5

for ($i = 1; $i <= 5; $i++) {
    echo $i . "<br>";
}

Результат:

1
2
3
4
5

Разберем по шагам:

  1. $i = 1 — инициализация счетчика.
  2. Проверка $i <= 5. Если true, выполняется тело цикла.
  3. После каждой итерации $i увеличивается на 1 ($i++).

Пример: Сумма чисел от 1 до 10

$sum = 0;
for ($i = 1; $i <= 10; $i++) {
    $sum += $i;
}
echo "Сумма: " . $sum; // Сумма: 55

Цикл while

Цикл while используется, когда количество итераций заранее неизвестно. Например, обработка данных из файла до тех пор, пока не достигнут конец файла.

Синтаксис цикла while

while (условие) {
    // Тело цикла
}

Цикл выполняется, пока условие истинно. Важно: если условие изначально false, тело цикла не выполнится ни разу.

Пример: Вывод чисел от 1 до 5 через while

$i = 1;
while ($i <= 5) {
    echo $i . "<br>";
    $i++;
}

Результат: аналогичен примеру с for.

Пример: Обработка пользовательского ввода

Допустим, мы складываем числа, которые вводит пользователь, пока он не введет 0:

$total = 0;
$number = (int) readline("Введите число (0 для выхода): ");

while ($number != 0) {
    $total += $number;
    $number = (int) readline("Введите число (0 для выхода): ");
}

echo "Сумма: " . $total;

Цикл do-while

Этот цикл похож на while, но с одним ключевым отличием: тело цикла выполнится хотя бы один раз, даже если условие ложно изначально.

Синтаксис do-while

do {
    // Тело цикла
} while (условие);

Пример: Проверка пароля

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

do {
    $password = readline("Придумайте пароль (минимум 8 символов): ");
} while (strlen($password) < 8);

echo "Пароль принят!";

Даже если пользователь сразу введет пароль из 8 символов, цикл выполнится один раз.

Сравнение циклов

  • for — когда известно количество итераций.
  • while — когда условие проверяется перед выполнением.
  • do-while — когда условие проверяется после выполнения.

Типичные ошибки с циклами

  1. Бесконечный цикл:
    while (true) {
        // Вечная работа...
    }

    Всегда проверяйте, чтобы условие цикла могло стать false.

  2. Неправильное изменение счетчика:
    for ($i = 0; $i < 5; $i--) {
        // $i уменьшается → условие никогда не станет false!
    }
  3. Использование do-while вместо while:
    Например, если нужно сначала проверить условие, а потом выполнить код.

Практические задачи

Закрепим материал на реальных примерах. Постарайтесь решить их самостоятельно, прежде чем смотреть решения.

Задача 1: Таблица умножения

Напишите скрипт, который выводит таблицу умножения на 5 (от 1 до 10) через цикл for.

Решение:

echo "<h3>Таблица умножения на 5</h3>";
for ($i = 1; $i <= 10; $i++) {
    echo "5 × $i = " . (5 * $i) . "<br>";
}

Задача 2: Поиск четных чисел

Используя цикл while, выведите все четные числа от 2 до 20.

Решение:

$i = 2;
while ($i <= 20) {
    echo $i . " ";
    $i += 2;
}

Задача 3: Факториал числа

Вычислите факториал числа 7 (7! = 7×6×5×…×1) через цикл for.

Решение:

$factorial = 1;
for ($i = 7; $i >= 1; $i--) {
    $factorial *= $i;
}
echo "7! = " . $factorial; // 5040

Задача 4: Обратный отсчет

Напишите скрипт, который выводит обратный отсчет от 10 до 1 с помощью do-while, а затем выводит «Пуск!».

Решение:

$count = 10;
do {
    echo $count . "<br>";
    $count--;
} while ($count >= 1);
echo "Пуск!";

Задача 5: Сумма цифр числа

Напишите код, который считает сумму цифр числа 8921 через цикл while.

Подсказка:

  • Используйте деление на 10 и остаток от деления.

Решение:

$number = 8921;
$sum = 0;

while ($number > 0) {
    $digit = $number % 10; // Получаем последнюю цифру
    $sum += $digit;
    $number = (int)($number / 10); // Убираем последнюю цифру
}

echo "Сумма цифр: " . $sum; // 8+9+2+1 = 20

Итоги 8-го урока

  • Цикл forиспользуем, когда известно количество итераций.
  • whileиспользуем, когда условие должно проверяться до выполнения кода.
  • do-whileиспользуем, когда код нужно выполнить хотя бы один раз.

Потренируйтесь решать задачи с условиями и счетчиками. Циклы это основа программирования и без них невозможно написать даже простой скрипт.

Полный курс с уроками по PHP для начинающих тут — https://max-gabov.ru/php-dlya-nachinaushih