web-dev-qa-db-ja.com

php foreachは続行します

特定の条件が満たされない場合、ループの次の反復にスキップしようとしています。問題は、ループが関係なく継続していることです。

どこがおかしいの?

最初のコメントに応じてコードサンプルを更新しました。

    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
45
JasonS

2番目のcontinueforeachループに適用しようとしている場合は、次のように変更する必要があります。

continue;

continue 2;

これはPHPにcontinueステートメントをforeachループである2番目のネストされたループに適用するように指示します。それ以外の場合は、forループ。

102
cdhowie

2番目continueは別のループにあります。これは、内側のループを「再起動」するだけです。外側のループを再開したい場合は、continueループがどれだけ上がるかを示すヒントを与える必要があります

continue 2;

手動 を参照してください

18
KingCrunch

continueループでforを呼び出しているため、forループではなく、foreachループに対して継続が行われます。つかいます:

continue 2;
10
netcoder

continueループ内のforは、forループではなく、foreachループ内をスキップします。

0
BeemerGuy