#2.16 php Циклы WHILE и DO...WHILE

Цикл с предусловием (while)

Другим типом циклов являются циклы while. Вместо использования счетчика цикла, цикл проверяется некоторое условие и выполняется до тех пор, пока оно остается истинным. Ниже приведен синтаксис цикла while.

while (expression) statement

Оператор statement, образующий тело цикла, может быть как простым, так и составным. Условие проверяется перед вьшолнением тела цикла, так что если оно будет ложным с самого начала, цикл не выполнится ни разу. Как легко догадаться, тело цикла должно оказывать какое-то влияние на условие, чтобы предотвратить образование бесконечного цикла (зацикливание). Пример 1 иллюстрирует использование цикла while. В данном примере на экран выводится значение переменной $value до тех пор, пока оно не превысит $10$, при этом значение удваивается при каждом выполнении тела цикла. Перед вьшолнением цикла переменная инициализируется (в противном случае ей бьшо бы по умолчанию присвоено значение $0$, что автоматически привело бы к бесконечному циклу).

Пример 1. Использование цикла while

<HTML>
    <HEAD>
        <TITLE>
            Использование цикла while
        </TITLE>
    </HEAD>
    <BODY>
        <H1>
            Использование цикла while
        </H1>
        <?php
            $value = 1 ;
            while ($value < 10)
            {
                echo "Значение $value = ", $value, "<BR>";
                $value *= 2 ;
            }
        ?>
    </BODY>
</HTML>

Результат выполнения этого примера приведён на рисунке.



Рис. 1. Использование цикла while

Данный тип цикла часто используется в том случае, если в цикле отсутствует явно заданный счетчик. Например, при чтении данных из файла обычно используется функция для проверки достижения конца файла. Ниже приведен пример подобного использования цикла while при помощи гипотетических функций. Обратите внимание, что в теле цикла происходит считывание данных (и тем самым продвигается указатель файла). Если этого не сделать, цикл станет бесконечным.

open_flle ();
while (! end_of_file ())
{
   $data = read_data () ;
   echo $data;
}

Цикл с постусловием (do...while)

Наряду с циклами while в PHP присутствуют и циклы do...while. Основное их отличие состоит в том, что условие цикла проверяется не до, а после того как тело цикла будет выполнено, что отражается и в синтаксисе оператора:


do
statement
while (condition)

Ниже приведен пример из предыдущего раздела, только с использованием оператора цикла do...while:

$value = 1;
do
{
   echo $value, "<BR>";
   $value *= 2;
}
while ($value < 10);

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

$value = 20;
while ($value < 10)
{
   echo $value, "<BR>";
   $value *= 2;
}

В тоже время после выполнения следующего примера на экран будет выведено число $20$:

$ value = 20;
do
{
   echo $value, "<BR>";
   $value *= 2;
}
while ($value < 10);
vedro-compota's picture

Рис. 1. Использование цикла while

-- рисунок не прогружается

_____________
матфак вгу и остальная классика =)

mariyas's picture

исправлено