Цикл 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 is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "i is ok";
/* process i */
} while (0);
?>
Не беспокойтесь, если вы не понимаете, это сразу или вообще. Вы можете писать скрипты даже мощные программы без использования этой 'возможности'. Начиная с версии PHP 5.3.0, стало возможным использовать оператор goto вместо такого трюка. Since PHP 5.3.0, it is possible to use goto operator instead of this hack.