What is the meaning of "break 2"?

funguy picture funguy · Sep 23, 2012 · Viewed 11.1k times · Source

I always used and seen examples with just "break". What is the meaning of this:

 <?php 
    while ($flavor = "chocolate") { 
      switch ($flavor) { 
        case "strawberry"; 
            echo "Strawberry is stock!"; 
            break 2;    // Exits the switch and the while 
        case "vanilla"; 
            echo "Vanilla is in stock!"; 
            break 2;   // Exits the switch and the while 
        case "chocolate"; 
            echo "Chocolate is in stock!"; 
            break 2;    // Exits the switch and the while 
        default;     
            echo "Sorry $flavor is not in stock"; 
            break 2;    // Exits the switch and the while 
      } 
    } 
    ?>

Are there more available options available with the 'break' statement?

Answer

Jason McCreary picture Jason McCreary · Sep 23, 2012

From the PHP docs on break:

break accepts an optional numeric argument which tells it how many nested enclosing structures are to be broken out of.

As noted in the comments it breaks out of the switch and while.

The following example would break out of all foreach loops:

foreach (...) {
  foreach (..) {
    foreach (...) {
      if ($condition) {
        break 3;
      }
    }
  }
}