PHP :: Операторы break, continue и goto
Оператор break
Как было показано выше, иногда может возникать необходимость в досрочном прекращении цикла. Для этого случая в PHP предусмотрен специальный оператор break, который широко используется не только во всех перечисленных циклах, но и в условном операторе switch. Более того, данный оператор может принимать необязательный числовой аргумент, который указывает интерпретатору на количество вложенных структур, которые необходимо прервать (см. рис. №1).
<?php //Задаем стартовое значение переменной $k=0; //Внешний цикл for($i=1; $i<=7; $i++){ //Внутренний цикл while($k<9){ //Увеличиваем значение на единицу $k+=1; //При достижении значения $k==4 if($k==4){ //прерываются оба цикла сразу break 2; } } } /* Благодаря прерыванию сразу обоих циклов внешний цикл прервется уже в ходе выполнения первой итерации */ //Выведет 4 echo $k; ?>
Пример №1. Использование оператора break
Если бы в примере отсутствовал числовой аргумент 2 оператора break, то при достижении переменной $k значения 4 прервался бы только внутренний цикл. В результате внешний цикл смог бы продолжить свою работу, и в конечном итоге переменная $k достигла бы значения 9. Измените код примера и посмотрите, как изменится результат.
Оператор continue
Когда нужно прервать не цикл, а только его текущую итерацию, используется оператор continue. Он также, как и оператор break, используется в циклах и операторе switch и может принимать необязательный числовой аргумент, указывающий интерпретатору на количество вложенных структур, текущие итерации которых требуется прервать (см. пример №2).
<?php //Задаем стартовое значение переменной $k=0; //Внешний цикл for($i=1; $i<=7; $i++){ //Внутренний цикл while($k<9){ //Увеличиваем значение на единицу $k+=1; //При достижении значения $k==4 if($k==4){ //прерываются текущие итерации обоих циклов сразу continue 2; } //Из-за continue не будет выведено значение $k==4 echo $k; } //Из-за continue не будет выведено значение $i==1 echo $i; } ?>
Пример №2. Использование оператора continue
Оператор goto
Выйти из цикла можно также при помощи оператора goto, который используется для перехода в другую часть программы, помеченную специальной меткой в виде идентификатора и следующего за ним двоеточия (см. пример №3).
<?php for($i=1; $i<=7; $i++){ //Из-за goto эта инструкция выполнится только один раз, //после чего интерпретатор перейдет к метке var_1 echo $i; //Переходим к указанной метке, пропуская промежуточный код goto var_1; //Из-за goto эта инструкция не выполнится ни разу ++$i; } //Задаем метку для перехода при помощи оператора goto var_1: echo '<br>'.'Сюда я перехожу из цикла'; //Переходим к следующей метке, пропуская промежуточный код goto var_2; //Этот код будет пропущен echo 'Я выведен не буду'; //Задаем еще одну метку для перехода при помощи оператора goto var_2: //Этот код будет выполнен echo '<br>'.'А вот меня покажут всем'; ?>
Пример №3. Использование оператора goto
Целевая метка должна находиться в том же файле и в том же контексте, что и оператор goto, указывающий на нее. Это означает, что нельзя переходить изнутри функции (метода) наружу или совершать обратный переход. Также недопустим переход извне внутрь любой циклической структуры или оператора switch.
Таким образом, основным предназначением оператора goto следует считать использование его в циклических структурах вместо многоуровневых операторов break.
Быстрый переход к другим страницам
- Цикл foreach в PHP
- Операторы break, continue и goto в PHP
- Понятие функции и ее синтаксис
- Вернуться к оглавлению учебника