59

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

我哪里出错了?

更新了代码示例以响应第一条评论。

    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
4

4 回答 4

117

如果您尝试将第二个continue应用到foreach循环,则必须将其从

continue;

continue 2;

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

于 2010-11-24T18:12:36.600 回答
23

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

continue 2;

手册

于 2010-11-24T18:12:48.357 回答
11

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

continue 2;
于 2010-11-24T18:13:03.903 回答
0

循环内continuefor跳过for循环内,而不是foreach循环。

于 2010-11-24T18:13:01.023 回答