【问题标题】:php foreach continuephp foreach 继续
【发布时间】:2011-05-15 06:45:28
【问题描述】:

如果不满足某些条件,我会尝试跳到循环的下一次迭代。问题是循环仍在继续。

我哪里出错了?

根据第一条评论更新了代码示例。

    foreach ($this->routes as $route => $path) {
        $continue = 0;

        ...

        // Continue if route and segment count do not match.
        if (count($route_segments) != $count) {
            $continue = 12;
            continue;
        }

        // Continue if no segment match is found.
        for($i=0; $i < $count; $i++) {
            if ($route_segments[$i] != $segments[$i] && ! preg_match('/^\x24[0-9]+$/', $route_segments[$i])) {
                $continue = 34;
                continue;
            }
        }

        echo $continue; die(); // Prints out 34

【问题讨论】:

  • 您正在覆盖$continue。完全有可能输入它设置为 1,然后在循环迭代中设置为 2。
  • foreach 之后设置$continue = 0;... 我敢打赌你不会再得到1。 A for 2,您需要告诉它继续向上 2 级,所以 continue 2;,否则它将进入 for 循环的下一次迭代...

标签: php foreach continue


【解决方案1】:

如果您尝试将第二个 continue 应用于 foreach 循环,则必须将其更改为

continue;

continue 2;

这将指示 PHP 将 continue 语句应用于第二个嵌套循环,即 foreach 循环。否则,它将仅适用于for 循环。

【讨论】:

    【解决方案2】:

    第二个继续在另一个循环中。这只会“重新启动”内部循环。如果你想重新开始外循环,你需要给 continue 一个提示,它应该向上循环多少次

    continue 2;
    

    Manual

    【讨论】:

      【解决方案3】:

      您在for 循环中调用continue,因此将为for 循环而不是foreach 循环执行 continue。使用:

      continue 2;
      

      【讨论】:

        【解决方案4】:

        for 循环内的continue 将在for 循环内跳过,而不是foreach 循环内。

        【讨论】:

          猜你喜欢
          • 2011-12-11
          • 1970-01-01
          • 1970-01-01
          • 2010-10-11
          • 2017-09-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-09
          • 2014-01-30
          相关资源
          最近更新 更多