Цикл WHILE выполняется, пока выражение в скобках принимает значение true.
Разберём на примере: необходимо вывести на экран числа от 1 до 10. С помощью цикла while эту задачу можно решить следующим образом:
<?php
$i = 0;
while($i < 10)
echo ++$i;
Результат в браузере:
12345678910
Перед запуском PHP получает результат выражения в круглых скобках и приводит к булеву типу.
Если при первом запуске результат будет true - блок кода выполнится. Затем опять произойдёт вычисление результата выражения и повторное выполнение блока кода. И так до тех пор, пока результатом выражения не станет false.
Переменная $i в данном случае выступает в роли счётчика и гарантирует, что скрипт будет выполнен столько раз, сколько нам нужно.
Будьте аккуратны при работе с циклом while. Вы можете случайно сделать бесконечный цикл вроде такого:
<?php
while(true)
echo 'Привет!';
Если запустить этот скрипт, страница зависнет и через некоторое время в браузере отобразится ошибка.
Цикл WHILE и несколько условий
При желании в цикл WHILE можно подставить сколько угодно условий:
<?php
$a = 5;
$b = 10;
$c = 0;
while($a < 10 && $b < 20 && $c < 10)
echo ++$a;
Задача 1
1. Создайте переменную $count с любым числовым значением, например 10.
2. С помощью цикла while выведите числа, количество которых равно $count, начиная с числа 1. Каждое последующее число должно быть больше предыдущего на 3. Т.е. при $count = 3 скрипт должен вывести 1 4 7.
$count = 10;
$num = -2;
$i = 0;
while($i < $count)
{
$num += 3;
echo $num, ' ';
$i++;
}
Другой вариант:
$count = 10;
$i = 0;
while($i < $count)
{
$result = $i === 0 ? 1 : 1 + $i * 3;
echo $result, ' ';
// Или в одну строку:
# echo ($i === 0 ? 1 : 1 + $i * 3), ' ';
$i++;
}
Задача 2
1. Создайте следующий массив: $arr = [3, 4, 9, 18, 22];
2. Напишите скрипт, который с помощью while переберёт все значения массива и выведет их на экран.
<?php
$arr = [3, 4, 9, 18, 22];
$i = 0;
while($i < count($arr))
echo $arr[$i++], ' ';