php foreach继续

时间:2010-11-24 18:09:22

标签: php foreach continue

如果不满足某些条件,我试图跳到循环的下一次迭代。问题是循环无论如何都在继续。

我哪里出错?

针对第一条评论更新了代码示例。

    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 个答案:

答案 0 :(得分:100)

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

更改它
continue;

continue 2;

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

答案 1 :(得分:17)

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

continue 2;

请参阅Manual

答案 2 :(得分:10)

您在continue循环中呼叫for,因此将继续for循环,而不是foreach循环。使用:

continue 2;

答案 3 :(得分:0)

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