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.