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.
精彩评论