Циклы do while
Оператор do...while повторяет циклически блок кода, пока определенное условие принимает значение true. Другими словами, оператор do…while будет выполнять блок кода, если и пока условие будет выполняться (т.е. оцениваться как true).
Цикл do...while аналогичен по своей природе циклу while, рассмотренному в предыдущем разделе. Ключевое различие состоит в том, что тело цикла do...while будет обязательно выполнено как минимум один раз. Это связано с тем, что оператор условия оценивается в конце оператора цикла после выполнения тела цикла.
Базовый синтаксис цикла do…while показан ниже.
do { выполняемый код; } while (условие);
Выполнение кода внутри цикла do…while будет повторяться, пока условие в конце цикла будет оцениваться как true. Блок кода, связанный с оператором do…while, всегда размещается внутри фигурных скобок.
Следующий пример демонстрирует цикл do…while, который продолжает выполняться, пока переменная $number будет больше или равна 2.
$number = 5; do { echo $number . "<br/>"; $number -= 1; { while ($number >= 2);
В приведенном выше примере переменная $number инициализируется значением 5. Цикл do…while выполняется до тех пор, пока справедливо условие ($number >=2) или $number больше или равно 2, выводя значение $number в окне браузера. В конце блока цикла значение $number уменьшается на 1.
Ниже показан вывод, создаваемый примером цикла:
5 4 3 2
Во время первого выполнения значение $number равно 5. Так как условие для выполнения цикла не проверяется, пока цикл не будет выполнен один раз, то выводится значение $number, равное 5. Затем значение $number уменьшается на 1, становясь равным 4. Так как 4 больше 2, снова выполняется цикл, и во время второй итерации используется оператор echo для вывода значения 4. В вывод добавляется <br/>, чтобы создать возврат каретки при каждом выполнении цикла. Этот процесс продолжается, пока значение $number равно 3 и 2. Когда $number становится равным 2, оператор echo выводит значение 2, и значение $number уменьшается затем до 1. Так как 1 не больше и не равно 2, то условие больше не выполняется, и цикл do…while заканчивается.