(PHP 4, PHP 5, PHP 7, PHP 8)
Циклы do-while
похожи на циклы while
,
за исключением того, что истинность выражения проверяется в конце каждой итерации, а не в начале.
Основное отличие от стандартных циклов while
состоит в том,
что первая итерация цикла do-while
гарантированно выполняется,
поскольку истинность выражения проверяется только в конце итерации, тогда как в стандартном
цикле while
выполнение первой итерации необязательно, поскольку истинность выражения
проверяется в начале каждой итерации, и если с са́мого начала выражение окажется ложным
и примет значение false
, выполнение цикла немедленно завершится.
Единственный синтаксис цикла do-while
:
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
В примере цикл выполнится ровно один раз, потому что после
первой итерации выражения оценивается как ложное
(переменная $i не больше 0) и принимает значение false
,
а выполнение цикла завершается.
Разработчики с опытом программирования на языке C
при работе с циклом do-while
пользуются
подходом, который останавливает выполнение циклов в середине блоков кода.
Для этого блок кода оборачивают конструкцией do-while
(0)
и указывают в блоке инструкцию break
.
Следующий фрагмент кода демонстрирует этот подход:
<?php
do {
if ($i < 5) {
echo "Значение переменной \$i ещё недостаточно велико";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "Теперь значение переменной \$i в порядке";
/* Обрабатываем переменную $i */
} while (0);
?>
Вместо этого «хака» иногда пользуются оператором
goto
.