Циклы do..while очень похожи на циклы while, но условное выражение
проверяется в конце каждой итерации, а не в начале. Главное отличие от регулярных циклов
while состоит в том, что первая итерация цикла do..while всегда выполняется
(условие проверяется только в конце итерации), а в цикле while этого может и не
быть (условие проверяется в начале каждой итерации и, если вычисляется в FALSE
сразу в начале, выполнение цикла немедленно прерывается).
Для циклов do..while существует один вариант синтаксиса:
$i = 0;
do {
print $i;
} while ($i>0);
Вышеприведённый цикл будет пройден точно один раз, поскольку после первого прохода проверка условного выражения даёт
FALSE ($i не больше 0), и выполнение цикла завершается.
Продвинутые пользователи C могут быть знакомы с другим вариантом использования цикла do..while,
когда разрешается остановка выполнения в середине блоков кода путём инкапсуляции их в
do..while(0) и использования оператора break
.
Следующий фрагмент демонстрирует это:
do {
if ($i < 5) {
print "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
print "i is ok";
...обработка i...
} while(0);
Не волнуйтесь, если вы здесь не поняли ничего или почти ничего.
Вы можете кодировать скрипты и даже полноценные приложения без использования этой ’возможности’.