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

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

continue;

continue 2;

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

于 2010-11-24T18:12:36.600 に答える
23

2 番目の続行は別のループにあります。これは、内側のループを「再起動」するだけです。外側のループを再開したい場合は、どのくらいのループまで進むべきかヒントを続ける必要があります

continue 2;

マニュアル参照

于 2010-11-24T18:12:48.357 に答える
11

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

continue 2;
于 2010-11-24T18:13:03.903 に答える
0

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

于 2010-11-24T18:13:01.023 に答える