Урок 15. PHP — Цикл Do while

На самом деле, как вы могли уже догадаться, цикл do while представляет собой слегка модифицированную версию цикла while, которую мы уже рассмотрели в прошлых уроках. Если вы вспомните, как работает обычный while, то вам будет проще понять новый цикл. Давайте повторим: тело цикла while выполняется, если условие верно и не выполняется, если не верно, но может и не выполниться ни разу, если условие будет с самого начала ложно. Как же работает do while?

Итак, новый цикл do выполняет свой ​​блок кода, по крайней мере, один раз. Это потому, что здесь условный оператор находится после тела цикла! Таким образом, простой цикл while называют «циклом с предусловием», а цикл do while — «циклом с постусловием».

Пример сравнения синтаксиса двух циклов

Простой пример, который иллюстрирует разницу между этими двумя типами циклов и работы их условных операторов.
Работа цикла while:

$cookies = 0;
while($cookies > 1){
	echo "Мммм! Люблю печеньки! *ом-ном-ном*";
} 

В результате мы не увидим ничего, так как переменная $cookies равна нулю и условие $cookies > 1 не сработает, следовательно цикл не выполнится. Теперь давайте сделаем то же самое, но с циклом do while:

$cookies = 0;
do {
	echo "Мммм! Люблю печеньки! *ом-ном-ном*";
} while ($cookies > 1);

В результате:

Мммм! Люблю печеньки! *ом-ном-ном*

Как видите, цикл сработал один раз, а потом проверил условие, которое не выполнилось и вышел из цикла. Такие конструкции обязательно вам когда-нибудь пригодятся! Лучше помнить о них, чтобы не изобретать потом велосипед.

Цикл Foreach | Содержание | POST & GET

Комментарии:

  1. Stas — 24.08.2013 01:17

    Люблю php, темболее когда его разьясняет такой автор как ты): *Ом-ном-ном* Легко жевать!)

  2. Михаил — 14.11.2013 13:48

    А разве выводом будет одна строка?
    $cookies = 0;
    do {
    echo «Мммм! Люблю печеньки! *ом-ном-ном*»;
    $cookies++;
    } while ($cookies > 1);
    Разве не так?

  3. Тимофей — 26.04.2015 20:27

    Stas, что ту разъяснять то? PHP практически ни чем не отличается от C, C++, C#, JAVA и т.д. Я имею ввиду на уровне уроков, которые на этом сайте. Тут автор просто показывает основные конструкции языка, школьники на Бейсике и Паскале поймут, если им код показать.

  4. кидди — 24.06.2015 14:07

    Михаил, условие не выполнилось и поэтому цикл дальше не бегает

  5. Xdark2 — 11.04.2019 06:14

    // Опасный код, если $cookies будет больше нуля, весь цикл уйдет в рекурсию! Необходимо сделать декремент $cookies или ограничить значение $cookies : хотя так-же и есть компромисс который не изменяет значение $cookies и не ограничивает входящие данные
    ### ### ###
    $cookies = 3;
    echo ‘Переменная $cookies равна ‘, $cookies, »;
    do {
    if ($AnyBool == false) {$AnyInt = $cookies; $AnyBool = true;}

    echo ‘Мммм! Люблю печеньки! *ом-ном-ном*’;
    —$AnyInt;
    echo » Осталось {$AnyInt} «;

    if ($AnyInt == 0) {$AnyBool = false;} // Перезагрузить триггер
    } while ($AnyInt > 0);

    echo ‘Переменная $cookies все ещё равна ‘, $cookies, »;
    ### ### ###
    // Последняя строчка цикла опциональна, она перезаряжает триггер $AnyBool, что позволяет использовать эту структуру ещё раз.

  6. Xdark2 — 11.04.2019 06:19

    Вместо этой структуры [«;] должен был быть хэштег [br] для переноса текста на новую строку, но походу автоформатирование комментария его стела… увы( Код будет выдавать ошибку =(

Добавить комментарий