Как использовать циклы while и do-while

В некоторых случаях необходимо выполнять код до тех пор, пока не будет достигнут нужный результат. Для этого PHP предоставляет циклы while, for и foreach.

Синтаксис цикла while в PHP

Синтаксис цикла while:

<?php
while (condition) {
// инструкции
}
?>

Пример использования цикла while в PHP:

<?php
$i = 0;
while($i < 10) {
echo "$i, ";
$i++;
}
?>

В примере цикла while в php, приведенном выше, сначала инициализируется переменная счётчика $i значением 0.

Условие цикла while – это $i < 10. Это означает, что мы проверяем, меньше ли переменная, чем 10.

Всё, что заключено в фигурные скобки – это инструкции (тело) цикла. Они повторяются до тех пор, пока условие возвращает значение true. В примере, приведенном выше, $i выводится на экран, а затем переменная счётчика увеличивается на 1. Это важно чтобы условие цикла, в конце концов, перестало соблюдаться. Если условие цикла соблюдается всегда, например, потому что вы забыли увеличить переменную счётчика $i, тогда скрипт войдёт в бесконечный цикл. К счастью, через некоторое время PHP прекратит выполнение вашего скрипта.

Вы можете сделать как условие цикла, так и тело цикла сколь угодно сложными. Например, использовать while внутри while php, использовать php while для перебора массива (array) или определить более одной переменной счётчика:

<?php
$counter1 = 0;
$counter2 = 0;
$min = -20;
$max = 30;
while ($count1 < $max && $count2 > $min) {
echo "count1: $count1; count2: $count2 <br>";
$ counter1 += 2; // Сокращённое выражение для $counter1 = $counter1 + 2;
$counter2 -= 3; // Сокращённое выражение для $count2 = $count2-3;
}
?>

В примере определяются две переменные: $counter1 и $counter2. Одна переменная увеличивается на 2, а другая уменьшается на 3. Цикл while выполняется, пока соблюдаются оба условия $count1 < $max и $count2 > $min.

Влияние ключевых слов break и continue на цикл

С помощью команды break можно прервать процесс выполнения цикла while в PHP. Допустим, мы ищем определённого пользователя. Тогда можно пройти по всем пользователям в цикле while. Если найдём нужного пользователя, то остановим цикл с помощью ключевого слова break.

Простой пример использования ключевого слова break :

<?php
$max = 30;
$count = 0;
$increment = 2;

while ($count < $max) { if ($count == 10) { echo "Останавливаемся на числе 10"; break; } echo "$count,"; $counter += $increment; // увеличивает $count на значение $increment } ?>

Этот код перебирает числа по возрастанию от 0 до $max = 30, прибавляя к переменной $count значение $increment, другими словами число 2. Но если переменная $count будет равна 10, произойдет выход из цикла while в php.

Ключевое слово continue не завершает цикл while в php полностью, а лишь пропускает оставшуюся часть тела цикла. Приведенный ниже пример демонстрирует это:

<?php
$max = 30;
$count = 0;
$increment = 2;

while ($count < $max) { $counter += $increment; // увеличивает $payer на $increment if ($count >= 10 && $count <= 15) { echo "Число между 10 и 15 <br>"; continue; }
echo "$count <br> <br>"; } ?>

Этот цикл начинается с 0 и увеличивает счётчик до значения $max. Переменная $counter всегда увеличивается на значение переменной $increment. То есть принимает значения 0, 2, 4 и т.д.

Если переменная $count имеет значение между 10 и 15, на экран будет выведен текст и оператор continue пропустит остальные выражения в теле цикла. В результате мы видим, что числа 10, 12 и 14 не выводятся.

Цикл do-while в PHP

Небольшой модификацией while является цикл dowhile. В данном случае условие цикла проверяется только после выполнения его тела. Это значит, что тело цикла выполнится хотя бы один раз.

Синтаксис цикла do-while:

<?php
do {
// инструкции
} while (condition);
?>

Предположим, что мы хотим сгенерировать случайное число, которое должно быть либо между 0 и 10, либо между 20 и 30. Согласно определению функции rand ($min, $max), можно случайным образом сгенерировать число между $min и $max:

<?php
$random = rand (0, 30);
while ($random > 10 && $random < 20) {
$random = rand (0, 30);
}

echo "Наше случайное число: $random"; ?>

Используя php цикл dowhile, можно получить значение выражения без инициализации переменной $random. Тело цикла выполняется перед тем, как проверяется условие. Тогда пример, приведенный выше, будет выглядеть следующим образом:

<?php
do {
$random = rand (0, 30);
} while ($random > 10 && $random < 20);

echo " Наше случайное число: $random"; ?>

Новичка цикл do-while может слегка сбить с толку. Если вы до конца не понимаете его цели, то это не проблема. Циклы do-while редко используются на практике.

Перевод статьи “How to use while, Do While loop” был подготовлен дружной командой проекта Сайтостроение от А до Я.