突破forloop但在switch语句php中

时间:2010-07-16 16:25:10

标签: php switch-statement break for-loop

当我通常想要在所有迭代完成之前突破foreach循环时,我只是使用一个中断;声明。 e.g。

foreach($nodelist as $node) {
   if($metCriteria) {
       break;
   }
}

但我的下一个例子中有一个switch语句。如果满足其中一个条件,那么我需要打破foreach循环。 (中断的问题用于switch语句)

foreach($nodelist as $node)
{
    switch($node->nodeName) {
        case "a" :
            //do something
            break;
        case "b" :
            //break out of forloop
            break;
    }
}

我只是在switch语句中设置一个变量然后在它之后中断吗? e.g。

$breakout = false;
foreach($nodelist as $node)
{
    switch($node->nodeName) {
        case "a" :
            //do something
            break;
        case "b" :
            $breakout = true;
            break;
    }
    if($breakout === true) break;
}

这是最好的解决方案吗?还是有另一种方式?

4 个答案:

答案 0 :(得分:57)

来自手册(break

  

break接受一个可选的数字参数,该参数告诉它有多少嵌套的封闭结构被打破。

答案 1 :(得分:11)

休息2;

break x将突破多个级别

答案 2 :(得分:8)

  

接受的答案没有实际的例子让我与你分享。

break 2 

表示退出循环和切换。

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* Exit only the switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* Exit the switch and the while. */
    default:
        break;
    }
}

答案 3 :(得分:-1)

只需使用{'s - 它将使代码不会“运行”。如果你问我,那就比休息声明好多了。