Break out out forloop, but in switch statement php

2022-08-30 12:24:54

当我通常想在所有迭代完成之前打破前期循环时,我只需使用休息时间;陈述。例如:

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

但是我的下一个示例中有一个 switch 语句。如果满足其中一个条件,那么我需要打破前循环。(问题是中断用于 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;
}

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


答案 1

从手册(中断)

break 接受一个可选的数字参数,该参数告诉它要分解多少个嵌套的封闭结构。


答案 2

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

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;
    }
}

推荐