Как использовать циклы 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 является цикл do—while. В данном случае условие цикла проверяется только после выполнения его тела. Это значит, что тело цикла выполнится хотя бы один раз.
Синтаксис цикла 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 цикл do—while, можно получить значение выражения без инициализации переменной $random. Тело цикла выполняется перед тем, как проверяется условие. Тогда пример, приведенный выше, будет выглядеть следующим образом:
<?php
do {
$random = rand (0, 30);
} while ($random > 10 && $random < 20);
echo " Наше случайное число: $random";
?>
Новичка цикл do-while может слегка сбить с толку. Если вы до конца не понимаете его цели, то это не проблема. Циклы do-while редко используются на практике.
Рекомендуем почитать