特定の条件が満たされない場合、ループの次の反復にスキップしようとしています。問題は、ループが関係なく継続していることです。
どこがおかしいの?
最初のコメントに応じてコードサンプルを更新しました。
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
2番目のcontinue
をforeach
ループに適用しようとしている場合は、次のように変更する必要があります。
continue;
に
continue 2;
これはPHPにcontinue
ステートメントをforeach
ループである2番目のネストされたループに適用するように指示します。それ以外の場合は、for
ループ。
2番目continueは別のループにあります。これは、内側のループを「再起動」するだけです。外側のループを再開したい場合は、continueループがどれだけ上がるかを示すヒントを与える必要があります
continue 2;
手動 を参照してください
continue
ループでfor
を呼び出しているため、for
ループではなく、foreach
ループに対して継続が行われます。つかいます:
continue 2;
continue
ループ内のfor
は、for
ループではなく、foreach
ループ内をスキップします。