38

当我通常想在所有迭代完成之前跳出 foreach 循环时,我只需使用 break;陈述。例如

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

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

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

我是否只是在 switch 语句中设置一个变量然后在它之后中断?例如

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

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

4

4 回答 4

69

从手册(休息

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

于 2010-07-16T16:27:41.453 回答
16

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

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;
    }
}
于 2016-12-19T18:53:06.173 回答
12

休息2;

break x 会突破那么多关卡

于 2010-07-16T16:26:28.797 回答
-2

只需使用 {'s - 它会阻止代码“运行”。如果你问我,比 break-statement 好得多。

于 2010-07-16T16:30:07.207 回答