(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.