Язык программирования PHP | страница 27




>

>$i=1;

>while ($i) {

> $n = rand(1,10);

> // генерируем произвольное число

> // от 1 до 10

> echo "$i:$n ";

> // выводим номер итерации и

> // сгенерированное число

> if ($n==5) break;

>/* Если было сгенерировано число 5,

>то прекращаем работу цикла. В этом случае

>все, что находится после этой строчки

>внутри цикла, не будет выполнено */

> echo "Цикл работает
";

> $i++;

>}

>echo "
Число итераций цикла $i ";

>?>


Результатом работы этого скрипта будет примерно следующее:


>1:7 Цикл работает

>2:2 Цикл работает

>3:5

>Число итераций цикла 3


Если после оператора break указать число, то прервется именно такое количество содержащих этот оператор циклов. В приведенном выше примере это неактуально, поскольку вложенных циклов нет. Немного изменим наш скрипт:


>

>$i=1;

>while ($i) {

> $n = rand(1,10);

> // генерируем произвольное число

> // от 1 до 10

> switch ($n){

> case 5:

> echo "

> Выход из switch (n=$n)";

> break 1;

> // прекращаем работу switch

> // (первого содержащего break цикла)

> case 10:

> echo "

> Выход из switch и

> while (n=$n)";

> break 2;

> // прекращаем работу switch и while

> // (двух содержащих break циклов)

> default:

> echo "switch работает (n=$n), ";

>}

>echo " while работает – шаг $i
";

>$i++;

>}

>echo "
Число итераций цикла $i ";

>?>


continue


Иногда нужно не полностью прекратить работу цикла, а только начать его новую итерацию. Оператор continue позволяет пропустить дальнейшие инструкции из блока_выполнения любого цикла и продолжить выполнение с нового круга. continue можно использовать с числовым аргументом, который указывает, сколько содержащих его управляющих конструкций должны завершить работу.


Заменим в примере предыдущего параграфа оператор break на continue. Кроме того, ограничим число шагов цикла четырьмя.


>

>$i=1;

>while ($i<4) {

> $n = rand(1,10);

> // генерируем произвольное число

> // от 1 до 10

> echo "$i:$n ";

> // выводим номер итерации и

> // сгенерированное число

> if ($n==5) {

> echo "Новая итерация ";

> continue;

>/* Если было сгенерировано число 5,

>то начинаем новую итерацию цикла,

>$i не увеличивается */

> }

> echo "Цикл работает
";

> $i++;

>}

>echo "
Число итераций цикла $i ";

>?>


Результатом работы этого скрипта будет


>1:10 Цикл работает

>2:5 Новая итерация 2:1 Цикл работает

>3:1 Цикл работает

>Число итераций цикла 4


Заметим, что после выполнения оператора continue работа цикла не заканчивается. В примере счетчик цикла не меняется в случае получения числа 5, поскольку он находится после оператора continue. Фактически с помощью continue мы пытаемся избежать ситуации, когда будет сгенерировано число 5. Поэтому можно было просто написать, заменив оператор continue на проверку истинности выражения: