Intereting Posts

PHP – выход из блока IF

Как я могу выйти из блока if, если выполнено определенное условие?

Я пробовал использовать break но он не работает:

 if($bla): $bla = get_bla(); if(empty($bla)) break; do($bla); endif; 

он говорит: Неустранимая ошибка: не удается сломать / продолжить 1 уровень в …

Почему бы просто не развернуть его.

 if($bla): $bla = get_bla(); if(!empty($bla)) { do($bla); } endif; 

Таким образом, он будет запускать ваш код только в том случае, если $ bla не пуст. Это своего рода точка с if-statement

В PHP 5.3 вы можете использовать goto

 if($bla): $bla = get_bla(); if(empty($bla)) goto end; do($bla); endif; end: 

Но лично я считаю, что это уродливое решение.

Вы не можете сломать, если выражения, только петли, например, или пока.

Если это функция if, используйте «return».

Я не могу поверить, что никто не опубликовал это решение (написав его в моем стиле PHP):

 if($bla){do{ $bla = get_bla(); if(empty($bla)) break; do($bla); }while(false);} 

Сложность все еще O (1)

Вы не можете.

Вы можете положить все это в функцию, из которой вы можете return .

В противном случае вам придется изменить логику и включить другой блок if.

 if($bla): $bla = get_bla(); if(!empty($bla)): do($bla); endif; endif; 

Для меня это помогает иметь маркер побега в случае, если код должен выйти из блока, если вы не против иметь оператор if в другом.

 $exit = FALSE; if(!$exit){ if($data["param1"] == cond1){ //do something and continue } else{ //do something $exit = TRUE; } } if(!$exit){ if($data["param2"] == cond2){ //do something and continue } else{ //do something $exit = TRUE; } } {...} 

Если вы продолжаете размещать условные утверждения вокруг каждого блока, он не будет выполнять никаких других блоков после того, как вы установили $ exit в true. Вы можете назвать переменную $ continue и вернуть ее роли, если это имеет для вас больше смысла.

он работает легче, если у вас нет других утверждений.

 $exit = FALSE; if($bla): $bla = get_bla(); if(empty($bla)) $exit = TRUE; if(!$exit)do($bla); endif; 

Строго говоря, мы не можем уйти, if -блока преждевременно, но иногда это действительно необходимо. break можно использовать только внутри петель и switch -block. Но мы можем поставить, if в цикле. Таким образом, ответ Маркоса Фернандеса Рамоса, вероятно, наиболее уместен. Вот лишь немного более приятный вариант.

 do if () { ... if () break; ... } while (false); 

Попробуй это

 do { if($bla) { $bla = get_bla(); if (empty($bla)) { break; } do($bla); } /* You can do more comparisions here */ } while (0); 

Если вам действительно нужна инструкция, из которой вы можете break , вы можете использовать оператор while :

 while ($bla) { $bla = get_bla(); if (!$bla) { break; } do($bla); // Maybe some more code... // Do not forget to break out of the while loop! break; } 

Это хороший способ избежать многих вложенных операторов if (чего, возможно, можно избежать во многих случаях), но будьте осторожны, чтобы break цикл.

если ваше условие является испытанием против одной переменной, то оператор switch является гораздо лучшим решением, и вы можете легко вырваться:

 switch ($var_to_check) { // equivalent to if ($var_to_check==$value_against) case $value_against: ... if ($something_wrong) { break; } // early exit from if ... break; // regular break default: // equivalent to else ... } // end of switch (or if) ... // after the tests 

Он работает только для однократных проверок. Имеет преимущество обработки кучу else ifs.