Материал предоставлен https://it.rfei.ru

Циклы while

Давайте превратим автомобильную панель приборов из примера “Использование оператора “?” » в цикл, постоянно проверяющий уровень топлива при езде на машине, в котором используется инструкция цикла 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