do-while

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