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);
?>
В примере цикл будет выполнен ровно один раз, так как после первой
итерации, когда проверяется истинность выражения, она будет
вычислена как false
($i не больше 0)
и выполнение цикла прекратится.
Опытные пользователи С могут быть знакомы с другим использованием
цикла 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
вместо подобного "хака".