当我通常想要在所有迭代完成之前突破foreach循环时,我只是使用一个中断;声明。 e.g。
foreach($nodelist as $node) {
if($metCriteria) {
break;
}
}
但我的下一个例子中有一个switch语句。如果满足其中一个条件,那么我需要打破foreach循环。 (中断的问题用于switch语句)
foreach($nodelist as $node)
{
switch($node->nodeName) {
case "a" :
//do something
break;
case "b" :
//break out of forloop
break;
}
}
我只是在switch语句中设置一个变量然后在它之后中断吗? 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;
}
这是最好的解决方案吗?还是有另一种方式?
答案 0 :(得分:57)
来自手册(break)
break接受一个可选的数字参数,该参数告诉它有多少嵌套的封闭结构被打破。
答案 1 :(得分:11)
休息2;
break x将突破多个级别
答案 2 :(得分:8)
接受的答案没有实际的例子让我与你分享。
break 2
表示退出循环和切换。
$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;
}
}
答案 3 :(得分:-1)
只需使用{'s - 它将使代码不会“运行”。如果你问我,那就比休息声明好多了。