Применение конструкции while для повторяющихся действий

Раздел: Основы PHP -> Циклы

Основы цикла 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. Следите, чтобы счётчики не влияли друг на друга.

Цикл while в PHP - comments

En
Php while (php)