(PHP 4, PHP 5, PHP 7)
Цикл 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);
?>
Не беспокойтесь, если вы не понимаете это сразу или вообще. Вы можете писать скрипты и даже мощные программы без использования этой 'возможности'. Начиная с версии PHP 5.3.0, стало возможным использовать оператор goto вместо подобного "хака".