Оператор 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.
Ниже показан вывод, создаваемый примером цикла:
Во время первого выполнения значение $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 заканчивается.
Оператор цикла for используется, когда известно, сколько раз необходимо выполнить оператор или последовательность операторов. В связи с этим цикл for называют точным циклом.
Базовый синтаксис цикла for показан ниже.
for (инициализация; условие; шаг цикла) {
выполняемый код;
}
Оператор цикла for имеет три параметра. Первый параметр используется для инициализации переменных, второй содержит условие, а третий включает в себя приращения, требуемые для реализации цикла. Блок кода, связанный с оператором for, заключается в фигурные скобки ({}), если блок состоит из одного оператора, то фигурные скобки не обязательны.
Следующий пример демонстрирует цикл for для 4-кратного вывода сообщения "Добро пожаловать в мир PHP":
<?php
for ($counter=1; $counter < 5; $counter++) {
echo "Добро пожаловать в мир PHP!<br/>";
}
?>
В приведенном выше примере цикл for включает три параметра, которые выполняют следующие задачи:
Переменная $counter инициализируется значением 1.
$counter < 5 определяет условие, которое должно выполняться для выполнения цикла.
$counter++ увеличивает значение переменной $counter при каждом выполнении цикла.
Ниже показан вывод, созданный этим примером цикла.
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
При первом выполнении переменная $counter инициализируется значением 1. Так как 1 меньше 5, $counter увеличивается на 1. Затем используется оператор echo для вывода строки "Добро пожаловать в мир PHP!". К выводу присоединяется <br/>, чтобы создавать возврат каретки при каждом выполнении цикла. Во время второй итерации значение $counter будет равно 2. Так как 2 меньше 5, то оператор echo снова выводит строку "Добро пожаловать в мир PHP!". Этот процесс продолжается при значениях $counter, равных 3 и 4. Когда $counter становится равным 5, условие больше не выполняется, и цикл for заканчивается.
Циклы for используются также в качестве удобного способа выполнения итераций по значениям массива. Вспомните, что массивы состоят из элементов и индексов. Каждый элемент имеет связанный с ним индекс. Первый индекс массива с числовыми индексами равен 0. До сих пор при выводе элементов массива требовалось выводить каждый элемент отдельно. Для больших массивов это может потребовать много времени и оказаться громоздким. Циклы for решают эту проблему. В следующем примере создается массив с 5 элементами. Затем применяется цикл for для вывода всех значений массива.
<?php
//Создается новый массив, содержащий 5 значений цвета
// Цикл for используется для итераций по массиву и вывода каждого элемента
for ($i = 0; $i < sizeof($colors); $i++)
{
echo "Значением элемента массива", $i+1," является $colors[$i].".<br>;
}
?>
Массив $colors содержит пять элементов — $colors[0] = "red", $colors[1] = "green", $colors[2] = "blue", $colors[3] = "yellow", и $colors[4] = "white". Создается цикл for. Переменной счетчику $i сначала задается значение 0, что соответствует первому элементу массива. Затем задается условие, проверяющее, что значение счетчика $i меньше sizeof($colors) или общего числа элементов массива. Здесь мы знаем, что размер массива равен 5, однако в большинстве случаев размер массива во время выполнения неизвестен. Наконец, переменная счетчика увеличивается на 1 во время каждой итерации. На каждом шаге выполнения цикла выводится строка — "Значением элемента массива $i+1 является $colors[$i]". Значения $i+1 и $colors[$i] расширяются и создают при выводе литеральные значения. Цикл выполняется, пока счетчик не превысит число элементов или размер массива. Получаемый вывод показан ниже.
Значением элемента массива 1 является red.
Значением элемента массива 2 является green.
Значением элемента массива 3 является blue.
Значением элемента массива 4 является yellow.
Значением элемента массива 5 является white.
Циклы являются полезными конструкциями, которые активно используются при программировании.