开发者

Break out out forloop but within switch statement php

开发者 https://www.devze.com 2023-01-07 10:31 出处:网络
When I normally want to break out of a foreach loop before all of the iterations have com开发者_StackOverflowpleted I simply use a break; statement. e.g.

When I normally want to break out of a foreach loop before all of the iterations have com开发者_StackOverflowpleted I simply use a break; statement. e.g.

foreach($nodelist as $node) {
   if($metCriteria) {
       break;
   }
}

But my next example has a switch statement in it. And if one of the conditions are met then I need to break from the foreach loop. (The problem being the break is used for the switch statement)

foreach($nodelist as $node)
{
    switch($node->nodeName) {
        case "a" :
            //do something
            break;
        case "b" :
            //break out of forloop
            break;
    }
}

Do I simply set a variable in the switch statement then break after it? e.g.

$breakout = false;
foreach($nodelist as $node)
{
    switch($node->nodeName) {
        case "a" :
            //do something
            break;
        case "b" :
            $breakout = true;
            break;
    }
    if($breakout === true) break;
}

Is this the best solution? or this there another way?


from the manual (break)

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


The accepted Answer has no practical example let me share with you.

break 2 

means exit from both loop and switch.

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* Exit only the switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* Exit the switch and the while. */
    default:
        break;
    }
}


break 2;

break x will break out of that many levels


Just use the {'s - it will keep the code from "running". Much better than the break-statement if you ask me.

0

精彩评论

暂无评论...
验证码 换一张
取 消