(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 вместо подобного «хака».