web-dev-qa-db-fra.com

continuer 2 et interrompre l'instruction switch

Je suis nouveau sur PHP et j'ai vu le code ci-dessous en ligne. Il a continue 2 et break ensemble dans switch/case déclaration. Qu'est-ce que ça veut dire?

foreach ( $elements as &$element ) {

    switch ($element['type']) {
        case a :
            if (condition1)
                continue 2; 
            break;

        case b :
            if (condition2)
                continue 2;
            break;
    }

    // remaining code here, inside loop but outside switch statement
}
19
typeof programmer

Le continue 2 saute directement à l'itération suivante de la structure qui est de deux niveaux en arrière, qui est le foreach. break (équivalent à break 1) termine simplement l'instruction switch.

Le comportement dans le code que vous avez montré est:

Boucle à travers $elements. Si un $element est de type "a" et condition1 est rencontré, ou s'il s'agit du type "b" et condition2 est atteint, passez à la suivante $element. Sinon, effectuez une action avant de passer à la prochaine $element.


De PHP.net:continue :

continue accepte un argument numérique facultatif qui lui indique le nombre de niveaux de boucles englobantes qu'il doit ignorer jusqu'à la fin. La valeur par défaut est 1, sautant ainsi à la fin de la boucle actuelle.

De PHP.net:switch

PHP continue d'exécuter les instructions jusqu'à la fin du bloc de commutation, ou la première fois qu'il voit une instruction break.

Si vous avez un commutateur à l'intérieur d'une boucle et souhaitez passer à la prochaine itération de la boucle externe, utilisez continue 2.

27
showdev

continue accepte un argument numérique facultatif qui lui indique le nombre de niveaux de boucles englobantes qu'il doit sauter jusqu'à la fin. La valeur par défaut est 1, sautant ainsi à la fin de la boucle actuelle.

Source: http://php.net/manual/en/control-structures.continue.php

2
Apul Gupta

continuer et rompre sont similaires en ce sens que cela empêchera quelque chose de se produire.

en cas de poursuite, il arrêtera quoi que ce soit après les accolades mais n'arrêtera pas la boucle. L'instruction switch sort juste de cette instruction et passe à l'instruction suivante.

En cas de rupture, cela arrêtera la boucle entière de continuer, terminez la boucle là.

1
Edward Manda