html.okpython.net
HTML и CSS для начинающих

PHP :: Операторы break, continue и goto

Оператор break

Как было показано выше, иногда может возникать необходимость в досрочном прекращении цикла. Для этого случая в PHP предусмотрен специальный оператор break, который широко используется не только во всех перечисленных циклах, но и в условном операторе switch. Более того, данный оператор может принимать необязательный числовой аргумент, который указывает интерпретатору на количество вложенных структур, которые необходимо прервать (см. рис. №1).

PHP Результат htmlCodes
<?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 Результат htmlCodes
<?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 Результат htmlCodes
<?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.

Быстрый переход к другим страницам