break $me;

Удивительно что такое большое количество людей не знает, что оператор break в PHP может принимать параметр который указывает какое количество вложенных циклов нужно остановить. Более того он может принимать переменную, что вряд ли полезно, но радует наличием возможности. Об этом мелким шрифтом написано в мануале, но судя по количеству кода, где я видел его использование, даже самые одаренные гуру читают ман по диагонали.


while(true){
	for($_=array(4);;){
		foreach($_ as $val){
			switch($_[]=$val){
				default:
					break $val;
			}
		}
	}
}

В примере $_ использовано для того чтобы сделать цикл foreach бесконечным, а switch добавлен просто для красоты примера, можно было бы еще do{}while(); добавить, но по-моему простого while вполне достаточно.

А вместо этого начинаются всякие пляски с бубном типа:


for($break=false;;){
	for(;;){
		$break=true;
		break;
	}
	if($break){
		break;
	}
}

Можно же как минимум красивее написать…


for($break=false;!$break;){
	for(;!$break;){
		$break=true;
	}
}

Эта конструкция по большому счету эквивалентна label в Java и JavaScript


label:
for (;;) {
	for (;;) {
		break label;
	}
}

Оператор continue работает точно также!

Комментарий “break $me;

  1. Да, ты прав, я хоть и помню о такой возможности… Однако использовал очень давно в крайний раз, года 3-4 назад… Да как-то необходимости в этом нет..

Комментарии закрыты