【问题标题】:PHP Break & Continue at the same timePHP Break & Continue 同时
【发布时间】:2012-09-15 04:33:32
【问题描述】:

我有一个像这样的嵌套循环:

while(1){

    while($something){
        break & continue;
    }
    // More stuff that I don't want to process in this situation
}

我想跳出第二个 while 循环并从头开始继续第一个循环(不完成第一个循环)。不使用变量可以吗?

【问题讨论】:

  • 我在第二个循环中有 IF/THEN 语句来确定我应该继续、中断还是中断并继续。我可以使用变量来确定这一点,但是没有它们是否可能是我要问的
  • 这听起来更像是您的逻辑可能会受益于更多的结构而不是其他任何东西; break 和 continue 通常是最后的手段。
  • 我不喜欢我的守护进程中有太多嵌套的 IF/THEN。我需要使用休息和继续是有原因的。
  • 另一个建议是添加一些功能分解。这样维护起来也会更容易。

标签: php loops nested-loops


【解决方案1】:

您可以在您的内部循环中continue 2; 以从头开始继续外部循环。

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

continue 接受一个可选的数字参数,告诉它有多少 它应该跳到末尾的封闭循环的级别。默认 value 为 1,因此跳到当前循环的末尾。

【讨论】:

    【解决方案2】:

    只需在内循环中使用'break'。它会跳出内循环,外循环会继续。

    【讨论】:

    • 在第二个 while 循环之后我有更多不想处理的东西。我需要这种方式是有原因的。
    • 哦,我明白了。您发布的代码中缺少这一点。您是否查看了编号中断并继续?看到这个 - stackoverflow.com/questions/5167561/…
    【解决方案3】:

    inner while 之后,不能只用 if 语句来执行 continue 吗?

    while(1){
    
        while($something){
            break;
        }
    
        if (!$something) {
           continue;
        }
    
        // More stuff that I don't want to process in this situation
    }
    

    【讨论】:

    • 我当然可以,这就是我可能要做的。我的问题是这是否可以在没有其他变量的情况下完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多