打破forloop但在switch语句php中

Posted

技术标签:

【中文标题】打破forloop但在switch语句php中【英文标题】:Break out out forloop but within switch statement php 【发布时间】:2011-03-17 01:38:44 【问题描述】:

当我通常想在所有迭代完成之前跳出 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;

这是最好的解决方案吗?还是有其他方法?

【问题讨论】:

【参考方案1】:

来自手册 (break)

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

【讨论】:

+1 这正是我所需要的。使用内置语言结构的奖励积分 - 到目前为止我一直在使用@Lizard 风格。 5.4.0 移除了将变量(例如,$num = 2; break $num;)作为数值参数传递的功能。【参考方案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;
    

【讨论】:

【参考方案3】:

休息2;

break x 会突破那么多关卡

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于打破forloop但在switch语句php中的主要内容,如果未能解决你的问题,请参考以下文章

用switch语句表示范围

Laravel:交换机在一个项目中正常工作,但在另一个项目中崩溃

切换语句将单词转换为数字? C ++

关于使用 switch 语句的问题

switch语句里不需要必须有break吗

VS快捷键