J'essaie de passer à la prochaine itération de la boucle si certaines conditions ne sont pas remplies. Le problème est que la boucle continue malgré tout.
Où ai-je mal tourné?
Exemple de code mis à jour en réponse au premier commentaire.
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
Si vous essayez de faire appliquer votre deuxième continue
à la boucle foreach
, vous devrez la changer de
continue;
à
continue 2;
Cela indiquera PHP pour appliquer l'instruction continue
à la deuxième boucle imbriquée, qui est la boucle foreach
. Sinon, elle ne s'appliquera qu'à for
boucle.
Le second continue est dans une autre boucle. Celui-ci ne fera que "redémarrer" la boucle intérieure. Si vous voulez redémarrer la boucle externe, vous devez donner à continue un indice sur le nombre de boucles à monter
continue 2;
Voir Manuel
Vous appelez continue
dans une boucle for
, donc continuez pour la boucle for
, pas celle foreach
. Utilisation:
continue 2;
Le continue
dans la boucle for
sautera dans la boucle for
, pas la boucle foreach
.