Операторы передачи управления



Иногда требуется немедленно завершить работу цикла либо отдельной его итерации. Для этого используют операторы break и continue .

Break

Оператор break заканчивает выполнение текущего цикла, будь то for , foreach , while , do..while илиswitch . break может использоваться с числовым аргументом, который говорит, работу скольких управляющих структур, содержащих его, нужно завершить.

<?php$i=1;while ($i) { $n = rand(1,10);     // генерируем произвольное число     // от 1 до 10 echo "$i:$n ";     // выводим номер итерации и     // сгенерированное число if ($n==5) break; /* Если было сгенерировано число 5, то прекращаем работу цикла. В этом случае все, что находится после этой строчки внутри цикла, не будет выполнено */ echo "Цикл работает <br>"; $i++;}echo "<br>Число итераций цикла $i ";?>

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

<?php$i=1;while ($i) { $n = rand(1,10);   // генерируем произвольное число   // от 1 до 10 switch ($n){ case 5: echo "<font color=blue>   Выход из switch (n=$n)</font>"; break 1; // прекращаем работу switch     // (первого содержащего break цикла) case 10: echo "<font color=red> Выход из switch и               while (n=$n)</font>"; break 2; // прекращаем работу switch и while     // (двух содержащих break циклов) default: echo "switch работает (n=$n), ";}echo " while работает – шаг $i <br>";$i++;}echo "<br>Число итераций цикла $i ";?>

Continue

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

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

<?php$i=1;while ($i<=4) { $n = rand(1,10); // генерируем произвольное число // от 1 до 10 echo "$i:$n "; // выводим номер итерации и     // сгенерированное число if ($n==5) {   echo "Новая итерация <br>";   continue; /* Если было сгенерировано число 5, то начинаем новую итерацию цикла, $i не увеличивается*/ } echo "Цикл работает <br>"; $i++;}--$i;echo "<br>Число итераций цикла $i ";?>

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

В PHP существует одна особенность использования оператора continue – в конструкциях switch он работает так же, как и break . Если switch находится внутри цикла и нужно начать новую итерацию цикла, следует использовать continue 2.

Операторы включения

Include

Оператор include позволяет включать код, содержащийся в указанном файле, и выполнять его столько раз, сколько программа встречает этот оператор. Включение может производиться любым из перечисленных способов:

include 'имя_файла';include $file_name;include ("имя_файла");

Пример. Пусть в файле params.inc у нас хранится набор каких-то параметров и функций. Каждый раз, когда нам нужно будет использовать эти параметры (функции), мы будем вставлять в текст нашей основной программы команду include 'params.inc'.

params.inc<?php$user = "Вася";$today = date("d.m.y"); /* функция date() возвращает дату и время (здесь – дату в формате день.месяц.год) */?> include.php<?phpinclude ("params.inc"); /* переменные $user и $today заданы в файле params.inc. Здесь мы тоже можем ими пользоваться благодаря команде include("params.inc") */echo "Привет, $user!<br>";     // выведет "Привет, Вася!"echo "Сегодня $today";     // выведет, например, "Сегодня 7.07.05"?>

 

Заметим, что использование оператора include эквивалентно простой вставке содержательной части файла params.inc в код программы include.php. Может быть, тогда можно было в params.inc записать простой текст без всяких тегов, указывающих на то, что это php-код? Нельзя! Дело в том, что в момент вставки файла происходит переключение из режима обработки PHP в режим HTML. Поэтому код внутри включаемого файла, который нужно обработать как PHP-скрипт, должен быть заключен в соответствующие теги.

Кроме локальных файлов, с помощью include можно включать и внешние файлы, указывая их url-адреса.

include() – это специальная языковая конструкция, поэтому при использовании внутри условных блоков ее нужно заключать в фигурные скобки.

<?php/* Это неверная запись. Получим ошибку. Мы же вставляем не одну команду, а несколько, они только записаны в другом файле */if ($condition) include("first.php");else include("second.php");// А вот так правильно. if ($condition){ include("first.php"); }else { include("second.php"); }?>

При использовании include возможны два вида ошибок – ошибка вставки (например, нельзя найти указанный файл, неверно написана сама команда вставки и т.п.) или ошибка исполнения (если ошибка содержится во вставляемом файле). В любом случае при ошибке в команде include исполнение скрипта не завершается.

 

Оператор require

Этот оператор действует примерно так же, как и #include в C++. Все, что мы говорили о include , лишь за некоторыми исключениями, справедливо и для require . require также позволяет включать в программу и исполнять какой-либо файл. Основное отличие require и include заключается в том, как они реагируют на возникновение ошибки. Как уже говорилось, include выдает предупреждение, и работа скрипта продолжается. Ошибка в require вызывает фатальную ошибку работы скрипта и прекращает его выполнение.

Условные операторы на require() не влияют. Хотя, если строка, в которой появляется этот оператор, не исполняется, то ни одна строка кода из вставляемого файла тоже не исполняется. Циклы также не влияют на require(). Хотя код, содержащийся во вставляемом файле, является объектом цикла, но вставка сама по себе происходит только однажды. require , как и include , при использовании внутри условных блоков нужно заключать в фигурные скобки.


Дата добавления: 2019-02-22; просмотров: 242; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!