web-dev-qa-db-fra.com

php foreach continue

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

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.

102
cdhowie

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

18
KingCrunch

Vous appelez continue dans une boucle for, donc continuez pour la boucle for, pas celle foreach. Utilisation:

continue 2;
10
netcoder

Le continue dans la boucle for sautera dans la boucle for, pas la boucle foreach.

0
BeemerGuy