Цикл while в PHP
Цикл while в PHP повторяет блок кода, пока условие истинно. Узнайте синтаксис, бесконечные циклы и отличия от do...while.
Цикл while в PHP повторяет блок кода до тех пор, пока заданное условие остаётся true. Это подходящий инструмент, когда заранее неизвестно, сколько итераций потребуется — например, при чтении строк из базы данных до их исчерпания или при запросе ввода до получения корректных данных. Если количество итераций известно заранее, обычно лучше использовать цикл for.
В этой статье рассматриваются синтаксис цикла while, способ вычисления его условия, альтернативная форма с endwhile, бесконечные циклы и способы их прерывания, а также отличия while от связанного цикла do...while.
Структура цикла while
Базовая структура цикла while в PHP выглядит следующим образом:
Синтаксис цикла while в PHP
while (condition) {
// code to be executed
}condition — это любое выражение, которое PHP вычисляет как boolean (true или false). Цикл работает в три шага:
conditionвычисляется перед каждой итерацией.- Если оно равно
true, тело цикла выполняется один раз. - PHP возвращается к шагу 1 и снова вычисляет условие.
Это важно: поскольку проверка происходит первой, тело выполняется ноль раз, если условие изначально равно false. Что-то внутри цикла (или само условие) должно в конечном счёте сделать условие false, иначе цикл будет выполняться бесконечно — см. раздел Бесконечные циклы ниже.
Альтернативный синтаксис с endwhile
PHP также предлагает форму с двоеточием и endwhile, которая удобна при смешивании циклов с HTML в шаблоне:
<?php $i = 1; ?>
<ul>
<?php while ($i <= 3): ?>
<li>Item <?php echo $i; ?></li>
<?php $i++; ?>
<?php endwhile; ?>
</ul>Обе формы ведут себя одинаково; выбирайте ту, которая лучше читается в контексте.
Пример использования цикла while
Рассмотрим пример использования цикла while для вывода чисел от 1 до 10. Вот код:
Пример использования цикла while в PHP
В этом примере мы инициализируем переменную $i значением 1 и задаём условие $i <= 10. Цикл продолжает выполняться, пока $i не превысит 10. На каждой итерации мы выводим значение $i и увеличиваем его на 1. Как только $i становится равным 11, условие становится false и цикл завершается. Вывод кода:
1 2 3 4 5 6 7 8 9 10Практический пример: перебор массива
while часто используется со счётчиком для обхода индексированного массива. Условие останавливает цикл на длине массива, поэтому вы никогда не выйдете за его пределы:
<?php
$fruits = ["Apple", "Banana", "Cherry"];
$i = 0;
while ($i < count($fruits)) {
echo $fruits[$i] . "\n";
$i++;
}
?>Это выводит каждый фрукт на отдельной строке:
Apple
Banana
CherryПри переборе элементов массива таким способом цикл foreach обычно является более чистым решением — он полностью устраняет необходимость в ручном счётчике. Используйте while, когда точка остановки зависит от чего-то иного, нежели известная длина (например, от наличия доступных данных).
Бесконечные циклы и выход из них
Можно создать бесконечный цикл, используя в условии цикла while выражение, которое всегда вычисляется как true. Например:
Синтаксис бесконечного цикла while в PHP
while (true) {
// code to be executed
}В таких случаях необходимо использовать оператор break, чтобы выйти из цикла при выполнении определённого условия. Оператор break немедленно прерывает цикл и переходит к следующему оператору после него. Вот пример:
Бесконечные циклы и выход из них
В этом примере цикл выводит числа от 1 до 10, а затем останавливается. Проверка с if в сочетании с break выступает в роли реального условия выхода. Связанный оператор continue отличается: вместо выхода из цикла он пропускает оставшуюся часть текущей итерации и сразу возвращается к проверке условия.
while и do...while
Цикл while проверяет условие перед выполнением тела, поэтому тело может не выполниться ни разу. Цикл do...while является его зеркальным отображением: он проверяет условие после тела, гарантируя выполнение тела как минимум один раз.
<?php
$i = 100;
// Condition is false from the start — body never runs:
while ($i < 10) {
echo "while: $i\n";
$i++;
}
// Body runs once, then the condition is checked:
do {
echo "do-while: $i\n";
$i++;
} while ($i < 10);
?>Вывод:
do-while: 100Используйте do...while, когда действие должно произойти до того, как станет известно, нужно ли его повторять — например, при запросе ввода с повторным запросом только в случае некорректных данных.
Заключение
Цикл while выполняет блок кода, пока его условие остаётся true, при этом условие проверяется перед каждой итерацией. Запомните три ключевых правила безопасного использования: инициализируйте управляющую переменную перед циклом, пишите условие, которое в конечном счёте станет false, и обновляйте эту переменную (или используйте break) внутри тела. Для изучения других вариантов цикла смотрите обзор циклов PHP, управляемый счётчиком цикл for и операторы сравнения, которые используются для построения условий цикла.
Диаграмма
graph TD;
A[While Loop Structure] --> B[Expression Evaluation];
B --> C{Execute Code};
C --> B;
B --> D[False];
D --> E[End Loop];