typeof programmer
typeof programmer

Reputation: 1609

continue 2 and break in switch statement

I am new to PHP and saw the code below online. It has continue 2 and break together in switch/case statement. What does it mean?

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
}

Upvotes: 53

Views: 85706

Answers (3)

showdev
showdev

Reputation: 29168

The continue 2 skips directly to the next iteration of the structure that is two levels back, which is the foreach. The break (equivalent to break 1) just ends the switch statement.

The behavior in the code you've shown is:

Loop through $elements. If an $element is type "a" and condition1 is met, or if it's type "b" and condition2 is met, skip to the next $element. Otherwise, perform some action before moving to the next $element.


From PHP.net:continue:

continue accepts an optional numeric argument which tells it how many levels of enclosing loops it should skip to the end of. The default value is 1, thus skipping to the end of the current loop.

From PHP.net:switch

PHP continues to execute the statements until the end of the switch block, or the first time it sees a break statement.

If you have a switch inside a loop and wish to continue to the next iteration of the outer loop, use continue 2.

Upvotes: 78

Edward Manda
Edward Manda

Reputation: 579

continue and break are similar in that the will stop something from happening.

in case of continue, it will stop anything after the braces but won't stop the loop. The switch statement just gets out of this statement and goes on to the next statement.

In case of break it will stop the entire loop from continuing, end the loop there.

Upvotes: 2

Apul Gupta
Apul Gupta

Reputation: 3034

continue accepts an optional numeric argument which tells it how many levels of enclosing loops it should skip to the end of. The default value is 1, thus skipping to the end of the current loop.

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

Upvotes: 4

Related Questions