PHP - 退出IF块

Ale*_*lex 22 php conditional if-statement exit

if如果满足某个条件,如何退出块?

我尝试使用break但它不起作用:

if($bla): 
  $bla = get_bla();
  if(empty($bla)) break;
  do($bla);
endif;
Run Code Online (Sandbox Code Playgroud)

它说:致命错误:无法打破/继续1级...

Bur*_*zel 39

在PHP 5.3中,您可以使用goto

if($bla): 
   $bla = get_bla();
   if(empty($bla)) goto end;
   do($bla);
endif;
end:
Run Code Online (Sandbox Code Playgroud)

但我个人认为这是一个丑陋的解决方案.

  • 自石器时代以来,GOTO在良好的编程中被"禁止" (34认同)
  • 为什么难看?在某些情况下肯定会有用.投票! (6认同)

Oli*_*Oli 13

你不能打破if语句,只能像for或while那样循环.

如果这个if在函数中,请使用'return'.


Son*_*dre 9

为什么不转身呢.

if($bla): 
  $bla = get_bla();
  if(!empty($bla)) {
    do($bla);
  }
endif;
Run Code Online (Sandbox Code Playgroud)

这样它只会在$ bla不为空的情况下运行你的代码.这就像if语句一样

  • 你的答案解决了问题,但没有回答"如何退出if块"的问题,值得注意的是,如果有可能的话. (21认同)
  • @rahmanisback就像你说的,它解决了问题,所以我真的不明白我的答案有什么问题。如果您只向下看一个答案,您就会发现该问题已得到解答。当我发布答案时,已经有几个帖子回答了这个问题,所以我所做的是提供一个实际的解决方案。你不能破坏 if 语句,如果你需要这样做,那么你就错误地使用了它。 (3认同)

Gre*_*eso 6

尝试这个

do {

    if($bla) {
        $bla = get_bla();

        if (empty($bla)) {
            break;
        }

        do($bla);
    }

    /* You can do more comparisions here */

} while (0);
Run Code Online (Sandbox Code Playgroud)


Mar*_*mos 5

我不敢相信还没有人发布此解决方案(以我的 PHP 风格编写):

if($bla){do{
  $bla = get_bla();
  if(empty($bla)) break;
  do($bla);
}while(false);}
Run Code Online (Sandbox Code Playgroud)

复杂度仍然是 O(1)

  • 哇。但它仍然完全变态......我们可以随意使用 goto,我们甚至可以使用 include() 并从那里返回,但我们不能只是退出 if 块...... (2认同)