На восьмом уроке мы погрузимся в одну из самых важных тем программирования, это циклы. Если вы мечтаете автоматизировать рутинные задачи, обрабатывать массивы данных или создавать сложные алгоритмы, без циклов не обойтись. В этом уроке я подробно расскажу о циклах for
, while
и do-while
, приведу множество примеров и задач для закрепления материала.
Что такое циклы?
Представьте, что вам нужно вывести числа от 1 до 100. Писать 100 строк кода с echo
не самое разумное решение. Здесь на помощь приходят циклы. Это конструкции, которые позволяют повторять выполнение кода многократно, пока выполняется заданное условие. В PHP есть три основных типа циклов:
for
while
do-while
Каждый из них имеет свои особенности. Разберемся по порядку.
Цикл for
Цикл for
идеален, когда вы заранее знаете, сколько раз нужно выполнить код. Например, для перебора массива фиксированной длины или генерации последовательности чисел.
Синтаксис цикла for
for (инициализация; условие; изменение) { // Тело цикла }
- Инициализация: задаем начальное значение переменной-счетчика.
- Условие: проверка перед каждой итерацией. Если
true
, цикл выполняется. - Изменение: обновление счетчика после каждой итерации (например, инкремент).
Пример: Вывод чисел от 1 до 5
for ($i = 1; $i <= 5; $i++) { echo $i . "<br>"; }
Результат:
1 2 3 4 5
Разберем по шагам:
$i = 1
— инициализация счетчика.- Проверка
$i <= 5
. Еслиtrue
, выполняется тело цикла. - После каждой итерации
$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
— когда условие проверяется после выполнения.
Типичные ошибки с циклами
- Бесконечный цикл:
while (true) { // Вечная работа... }
Всегда проверяйте, чтобы условие цикла могло стать
false
. - Неправильное изменение счетчика:
for ($i = 0; $i < 5; $i--) { // $i уменьшается → условие никогда не станет false! }
- Использование
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