有没有办法打破运营商喜欢的同时

时间:2014-12-19 13:47:32

标签: php if-statement

有没有办法像if循环一样打破while语句?

while(true) { 
    break;
}

if(true) {
    //break if
} else {
    //continue execution here or miss if at all
}

5 个答案:

答案 0 :(得分:0)

是的,使用goto。谨慎使用,因为它通常表明其他地方的代码习惯不良。它确实有合法的用途(比如打破嵌套循环)。

http://php.net/manual/en/control-structures.goto.php

我认为你的问题措辞不合理。我认为这是你遇到的问题:

if( foo ) {
    if( bar ) {
        baz();
    } else {
        qux();
    }
} else {
    qux();
}

您希望简化此操作,以便qux()只需要表达一次,而不是两次。存在使用goto的可能解决方案:

if( foo ) {
    if( bar ) {
        baz();
    } else {
        goto quxLabel;
    }
} else {
    quxLabel:
    qux();
}

这样可行,但我认为更好的解决方案(如果可能,在您的情况下)是组成您的分支条件。这要求您能够独立于bar评估foo,因此我不知道这是否适用于您的情况:

if( foo && bar ) baz();
else             qux();

如果bar取决于foo,那么您仍然可以使用此技术,但可以利用&&运算符的短路行为:

if( foo && computeBar( foo ) ) baz();
else                           qux();

答案 1 :(得分:0)

简单地说,颠倒顺序并使用!

<?php
if(!true){
echo "execution here or miss if at all";
} else {
echo "Nothing";
}

查看此演示:http://codepad.org/XdFKfY9R

答案 2 :(得分:0)

if - 语句用于分支代码而不重复,因此不需要break构造函数。当您使用loop控制语句时,情况会有所不同,特别是那些没有给定循环条件语句的控制语句,如:

while (1==1) {
  ...
}

为了避免无限循环,你需要结合分支和循环语句,也许这就是你的问题背后的想法:

 while (1==1) {

   // do stuff
   ...

   // special condition
   if ($cancel) {
     break;
   }
 }

答案 3 :(得分:-2)

  if(true){ 
   goto end; 
  }
  else {
  continue execution here or miss if at all
  }  
  end:
  /* your statement*/

答案 4 :(得分:-2)

try {
    if (...) {
        do_something();
        ...
        throw new \Exception(); // Break here
        ...
    }
} catch (\Exception $e) {}

// Resumes here:
do_something_now()

使用异常通常是打破循环(或其他任何东西)的最佳方法。它们用于表示错误,但可以随时随地捕获和处理。