Цикл for в PHP 8.2: подробное руководство
Цикл for: Повторяем действия с умом
Введение: Зачем нужен цикл?
Представь, что тебе нужно написать на доске фразу «Я молодец» 10 раз. Если делать это вручную, ты напишешь одну строчку, потом вторую... это скучно и долго. А если нужно 100 раз? Или 1000?
В программировании для таких повторяющихся действий существует специальная конструкция — цикл. Цикл for — это как «умный повторятель». Ты говоришь ему: «Повторяй вот это действие столько-то раз», и компьютер делает всё сам. Это экономит время и силы.
В реальной жизни циклы встречаются повсюду: лифт проезжает этаж за этажом, банкомат просит повторить фразу несколько раз, ты раздаёшь конфеты одноклассникам по одной — всё это примеры повторяющихся действий.
Основной синтаксис цикла for
В PHP цикл for записывается так:
<?php
for (начало; условие; шаг) {
// Действие, которое нужно повторить
}
?>
Разберём три части в скобках:
- Начало — это точка старта. Обычно мы заводим счётчик:
$i = 0или$i = 1. Это номер нашего шага. - Условие — пока оно верно, цикл продолжается. Как только становится ложным — цикл останавливается. Например:
$i < 5(повторять, пока счётчик меньше 5). - Шаг — что происходит с счётчиком после каждого повторения. Чаще всего:
$i++(увеличить на 1).
Внутри фигурных скобок { } пишется то, что нужно повторять.
Пример 1: Простой счёт
Выведем числа от 1 до 5:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Число: " . $i . "\n";
}
?>
Вывод:
Число: 1
Число: 2
Число: 3
Число: 4
Число: 5
Здесь $i начинается с 1. Пока $i <= 5 (меньше или равно 5), мы выводим число. После каждого круга $i увеличивается на 1 ($i++). Когда $i становится 6, условие 6 <= 5 — ложь, цикл заканчивается.
Пример 2: Повторяем фразу с клавиатуры
Представь задачу из банкомата: пользователь вводит, сколько раз повторить фразу. Программа читает это число и выводит фразу нужное количество раз.
<?php
$count = (int) fgets(STDIN); // Читаем число с клавиатуры
$phrase = "Пароль принят";
for ($i = 0; $i < $count; $i++) {
echo $phrase . "\n";
}
?>
Ввод: 3
Вывод:
Пароль принят
Пароль принят
Пароль принят
Обрати внимание: $i начинается с 0, а условие $i < $count. Если ввести 3, цикл выполнится для $i = 0, 1, 2 — ровно 3 раза.
Разбор типичных задач
Задача «Лифт»
Условие: Лифт едет с нулевого этажа на нужный этаж N. Дисплей показывает каждый этаж, который проезжает лифт (от 1 до N).
Решение: Выводим этажи от 1 до N.
<?php
$targetFloor = (int) fgets(STDIN); // Читаем номер этажа
for ($floor = 1; $floor <= $targetFloor; $floor++) {
echo "Этаж " . $floor . "\n";
}
echo "Приехали!";
?>
Ввод: 4
Вывод:
Этаж 1
Этаж 2
Этаж 3
Этаж 4
Приехали!
Задача «День рождения»
Условие: У тебя есть K конфет. Ты раздаёшь их одноклассникам по одной, пока конфеты не закончатся. Всего в классе M учеников. Сколько конфет ты раздашь?
Решение: Если конфет меньше, чем учеников, то раздашь все. Иначе — раздашь по одной каждому.
<?php
$candies = (int) fgets(STDIN); // Сколько конфет
$students = (int) fgets(STDIN); // Сколько учеников
$given = 0;
for ($i = 0; $i < $students && $candies > 0; $i++) {
$candies--; // Отдаём одну конфету
$given++; // Считаем, сколько отдали
}
echo "Раздано конфет: " . $given;
?>
Ввод: 3 (конфеты), 5 (ученики)
Вывод: Раздано конфет: 3
Здесь в условии цикла стоит $i < $students && $candies > 0 — цикл работает, пока есть и ученики, и конфеты.
Частые ошибки новичков
- Бесконечный цикл: Если забыть изменить счётчик (
$i++) или написать условие, которое всегда истинно (например,$i > 0при старте с 1), программа будет работать вечно. Всегда проверяй, что счётчик меняется в нужную сторону. - Путаница в начале отсчёта: Если нужно повторить действие 5 раз, можно начать с
$i = 0; $i < 5(0,1,2,3,4 — 5 раз) или с$i = 1; $i <= 5(1,2,3,4,5 — тоже 5 раз). Выбирай любой способ, главное — не ошибиться в количестве. - Забытые фигурные скобки: Если в цикле только одно действие, скобки можно не ставить, но новичкам лучше всегда их писать — это делает код понятнее и уберегает от ошибок.
- Ошибка на единицу: Если нужно вывести числа от 1 до N, а ты пишешь
$i < Nвместо$i <= N, то последнее число не выведется. Будь внимателен со знаками<и<=.
Итоговый пример: Поднятие мотивации
Задача: Ты пришёл в спортзал и решил сделать N упражнений. Тренер говорит тебе: «На каждом подходе делай на одно повторение больше, чем в предыдущем». Начни с 1 повторения. Выведи, сколько повторений ты сделаешь на каждом подходе.
Решение: Используем цикл от 1 до N, и на каждом шаге выводим номер подхода и количество повторений (равное номеру подхода).
<?php
$approaches = (int) fgets(STDIN); // Сколько подходов
echo "Твоя тренировка:\n";
for ($i = 1; $i <= $approaches; $i++) {
echo "Подход " . $i . ": " . $i . " повторений\n";
}
echo "Молодец, ты справился!";
?>
Ввод: 4
Вывод:
Твоя тренировка:
Подход 1: 1 повторений
Подход 2: 2 повторений
Подход 3: 3 повторений
Подход 4: 4 повторений
Молодец, ты справился!
Видишь, как легко? Цикл for сам посчитал всё за тебя. Теперь ты можешь решать задачи, где нужно что-то повторить определённое количество раз — будь то этажи, конфеты или упражнения. Главное — запомнить три части цикла: начало, условие и шаг. Удачи в программировании!