Давайте превратим автомобильную панель приборов из примера “Использование оператора “?” » в цикл, постоянно проверяющий уровень топлива при езде на машине, в котором используется инструкция цикла whilе
(см. следующий пример).
Пример. Цикл while
<?php
$fuel = 10;
while ($fuel > 1)
{
// Продолжение поездки ...
echo "Топлива еще достаточно";
}
?>
Вообще-то, вы можете предпочесть выводу текста горящий зеленый сигнал, но суть в том, что любая разновидность позитивной индикации об уровне топлива помещается в цикл while
. Кстати, учтите, что если вы запустите этот пример на выполнение, то он будет постоянно выводить строку до тех пор, пока вы не остановите работу браузера.
Здесь, как и в случае с инструкциями if
, для хранения инструкций внутри цикла while используются фигурные скобки, если в этом цикле не задействована только одна инструкция.
Ниже в примере показан еще один вариант использования цикла whilе
, в котором выводится таблица умножения на 12.
Пример. Цикл while
для вывода таблицы умножения на 12
<?php
$count = 1;
while ($count <= 12)
{
echo "Число $count, умноженное на 12, равно " . $count * 12 . "<br />":
++$count;
}
?>
В этом примере переменной $count
присваивается начальное значение 1, а затем запускается цикл whilе
, в котором используется выражение сравнения $count <= 12
. Этот цикл будет выполняться до тех пор, пока значение переменной не станет больше 12. Этот код выведет следующий текст:
Число 1, умноженное на 12, равно 12
Число 2, умноженное на 12, равно 24
Число 3, умноженное на 12, равно 36
...
Внутри цикла осуществляется вывод строки, а также значения переменной $count
, умноженного на 12. Для того чтобы упорядочить вывод, после всего этого использован тег <br/>
, вызывающий переход на новую строку. Затем перед закрывающей фигурной скобкой, предписывающей РНР вернуться к началу цикла, значение переменной $count
увеличивается на единицу.
Теперь значение переменной $count
опять проверяется, чтобы узнать, не превышает ли оно число 12. Оно не превышает его, но теперь равно 2, и после одиннадцати последующих прохождений цикла оно станет равно 13. Когда это произойдет, код, находящийся внутри цикла whilе
, будет пропущен и станет выполняться код, следующий за циклом, в данном случае это будет завершение программы.
При отсутствии оператора ++$count
(вместо которого с таким же успехом может быть применен оператор $count++
) этот цикл будет похож на первый, показанный в этом разделе. Он никогда не закончится и будет снова и снова выводить один и тот же результат 1·12.
Но есть и более изящный способ написания этого цикла, который должен вам понравиться. Посмотрите на код примера:
Пример. Укороченная версия предыдущего примера
<?php
$count = 0;
while (++$count <= 12)
echo "Число $count, умноженное на 12, равно " . $count * 12 . "<br />":
?>
В этом примере оператор ++$count
был удален из тела цикла whilе
и помещен непосредственно в выражение условия цикла. Теперь РНР вычисляет значение переменной $count
в начале каждого прохода цикла (итерации) и, заметив, что перед именем переменной стоит оператор инкремента, сначала увеличивает значение переменной на 1 и только потом сравнивает его с числом 12. Следовательно, теперь переменной $count
присваивается начальное значение 0, а не 1, поскольку это значение увеличивается сразу же, как только происходит вход в цикл. Если оставить начальное значение, равное 1, то будут выведены результаты для чисел между 2 и 12.
Организация циклов | Циклы do...while |