Javascript或PHP中是否有用于循环的“超级中断”?
在我工作的许多项目中,我发现我已经嵌套了for循环,我将重点关注PHP实现,但也适用于采用这种通用形式的javascript:Javascript或PHP中是否有用于循环的“超级中断”?,javascript,php,for-loop,break,Javascript,Php,For Loop,Break,在我工作的许多项目中,我发现我已经嵌套了for循环,我将重点关注PHP实现,但也适用于采用这种通用形式的javascript: $array1 = array(........); $count1 = count($array1); $invalidState = false;//An invalid state will be looked for in the innermost loop, and if found, break all the loops for($i = 0; $i
$array1 = array(........);
$count1 = count($array1);
$invalidState = false;//An invalid state will be looked for in the innermost loop, and if found, break all the loops
for($i = 0; $i < $count1; $i++) {
//parsing, then another loop
$array2 = explode("needle", $array1[$i]);
$count2 = count($array2);
for($j = 0; $j < $count2; $j++) {
//parsing, then sometimes even another another loop
$array3 = explode("different-needle", $array2[$j]);
$count3 = count($array3);
for($k = 0; $k < $count3; $k++) {
//check for an invalid state in $array3[$k], and break if invalid state = true;
}
if ($invalidState) break;
}
if ($invalidState) break;
}
重申一下,如果在最里面的循环中发现无效状态,那么所有循环都应该中断。但据我所知,要从所有循环中断,我必须在本例中设置一个变量$invalidState,并在所有外部循环中检查它,如果为真,则中断
是否存在任何类型的超级中断,如果最内层循环中满足某个条件,则所有外部循环都将被中断?我建议将外部循环设置为自己的函数,并在循环的中心显式返回到所有嵌套循环的硬中断。我建议将外部循环设置为自己的函数,并显式返回到循环的中心,以从所有嵌套循环中硬中断。可能最容易将循环包装在函数中,当您想使用超级中断时,只需使用return。可能最容易将循环包装在函数中,当您想使用超级中断时,只需使用return。您可以使用return此目的您可以使用return来实现此目的是的,请尝试以下方法:
for($i = 0; $i < $count1; $i++) {
//parsing, then another loop
$array2 = explode("needle", $array1[$i]);
$count2 = count($array2);
for($j = 0; $j < $count2; $j++) {
//parsing, then sometimes even another another loop
$array3 = explode("different-needle", $array2[$j]);
$count3 = count($array3);
for($k = 0; $k < $count3; $k++) {
break 3;
}
if ($invalidState) break;
}
if ($invalidState) break;
}
当您写入break n时,您正在中断n个嵌套循环。
但是,您不能破坏$foo,因为此功能最近已被删除:
是的,试试这个:
for($i = 0; $i < $count1; $i++) {
//parsing, then another loop
$array2 = explode("needle", $array1[$i]);
$count2 = count($array2);
for($j = 0; $j < $count2; $j++) {
//parsing, then sometimes even another another loop
$array3 = explode("different-needle", $array2[$j]);
$count3 = count($array3);
for($k = 0; $k < $count3; $k++) {
break 3;
}
if ($invalidState) break;
}
if ($invalidState) break;
}
当您写入break n时,您正在中断n个嵌套循环。
但是,您不能破坏$foo,因为此功能最近已被删除:
你应该考虑这个问题:
break 3; //Breaks 3 levels, so breaks outermost foreach
你应该考虑这个问题:
break 3; //Breaks 3 levels, so breaks outermost foreach
是的,你应该检查这个:为了补充@luigonsec的评论,。我想这就是你想要的:我更喜欢击球突破或队长突破,但超级突破是好的too@JaromandaX它是一只鸟?是飞机吗?不这是超级突破!是的,你应该检查这个:为了补充@luigonsec的评论,。我想这就是你想要的:我更喜欢击球突破或队长突破,但超级突破是好的too@JaromandaX它是一只鸟?是飞机吗?不这是超级突破!这应该被认为是答案,因为它确实给出了响应,而不是一个解决方法。事实上,break n是从PHP 5.4中删除的,所以这个示例将在PHP 5.4+上抛出语法错误。您给我的链接@Martin:5.4.0-删除了传入变量的能力,例如,$num=2;打破$num;作为数值论证。但是break 3似乎仍在工作。你说得对,它只与break$var语法有关。@Martin谢谢你的观察,我学到了一些新东西!这应该被认为是答案,因为它确实给出了响应,而不是一个解决方法。事实上,break n是从PHP 5.4中删除的,所以这个示例将在PHP 5.4+上抛出语法错误。您给我的链接@Martin:5.4.0-删除了传入变量的能力,例如,$num=2;打破$num;作为数值论证。但是break 3似乎仍在工作。你说得对,它只与break$var语法有关。@Martin谢谢你的观察,我学到了一些新东西!应打破3;根据@luigonsec的回答,应该是break 3;根据@luigonsec的回答。