Применение конструкции while для повторяющихся действий
Основы цикла while
Цикл while выполняет блок кода до тех пор, пока заданное условие истинно. Его синтаксис:
<?php
while (условие) {
// действия
}
?>While php get (цикл while с get параметрами)
Условие проверяется перед каждой итерацией. Если условие ложно с самого начала, тело цикла не выполнится ни разу.Наиболее эффективное решение для вывода чисел от 1 до 5:
<?php
$i = 1;
while ($i <= 5) {
echo $i . " ";
$i++;
}
?>Php while (цикл while в php)
Результат:
1 2 3 4 5
Foreach php (цикл foreach в php)
Переменная $i инициализируется перед циклом, проверяется условие $i <= 5, после каждого вывода значение увеличивается на единицу. Без приращения возникнет бесконечный цикл.
Как суммировать числа с помощью while?
Цель: получить сумму чисел от 1 до заданного значения. Пример суммирования от 1 до 100:
<?php
$sum = 0;
$i = 1;
while ($i <= 100) {
$sum += $i;
$i++;
}
echo "Сумма: $sum";
?>Результат: Сумма: 5050
Типичная ошибка: забыть увеличить $i - цикл станет бесконечным. Всегда проверяйте, что условие может стать ложным. Если переменная не меняется, используйте break для выхода.
Как перебрать элементы массива с помощью while?
Когда индексы массива не последовательны, можно использовать current(), next() и key():
<?php
$fruits = ["яблоко", "груша", "слива"];
reset($fruits);
while (current($fruits) !== false) {
echo key($fruits) . ": " . current($fruits) . "<br>";
next($fruits);
}
?>Результат:
0: яблоко
1: груша
2: слива
Проблема: если массив содержит элемент со значением false (например, пустая строка или 0), условие может завершить цикл преждевременно. Решение - проверять ключ через key() или использовать for при числовых индексах.
Как читать файл построчно с помощью while?
Для обработки больших файлов удобно читать строки в цикле:
<?php
$handle = fopen("data.txt", "r");
if ($handle) {
while (!feof($handle)) {
$line = fgets($handle);
if ($line !== false) {
echo htmlspecialchars($line) . "<br>";
}
}
fclose($handle);
}
?>Результат: вывод строк из файла.
Частая ошибка: не проверять успешность открытия файла. Если файл не существует, fopen() вернёт false, и цикл приведёт к ошибке. Также не забывайте закрывать файл через fclose().
Расширенные примеры с циклом while
Продвинутые приёмы позволяют гибко управлять исполнением.
Пример 1: while с continue (пропуск чётных чисел)
Цель: вывести только нечётные числа от 1 до 10.
<?php
$num = 1;
while ($num <= 10) {
if ($num % 2 == 0) {
$num++;
continue;
}
echo $num . " ";
$num++;
}
?>Результат:
1 3 5 7 9
Пояснение: continue прерывает текущую итерацию и переходит к следующей проверке условия. Важно не забыть увеличить счётчик до continue, иначе цикл застрянет на том же значении.
Пример 2: while с break (поиск числа, кратного 7 и 5)
Цель: найти наименьшее натуральное число, которое делится и на 7, и на 5.
<?php
$n = 1;
while (true) {
if ($n % 7 == 0 && $n % 5 == 0) {
echo "Найдено: $n";
break;
}
$n++;
}
?>Результат:
Найдено: 35
Пояснение: бесконечный цикл while (true) требует явного выхода через break. Такой подход удобен, когда условие завершения нельзя сформулировать до начала итераций.
Пример 3: вложенный while для таблицы умножения
Цель: вывести таблицу умножения от 1 до 4.
<?php
$i = 1;
while ($i <= 4) {
$j = 1;
while ($j <= 4) {
echo $i * $j . " ";
$j++;
}
echo "<br>";
$i++;
}
?>Результат:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
Пояснение: внешний цикл перебирает множители первого столбца, внутренний - второго. Каждый внутренний цикл начинается с $j = 1. Следите, чтобы счётчики не влияли друг на друга.