我正在编写一些代码,这些代码经常包含在某些条件下需要突破的循环。问题是,有时,我嵌套了3个层次,有些是4层,有些是5层或更多。
我可以编写break 3、break 4和break 5等等,但这需要我跟踪每个嵌套循环中当前的深度。在不使用goto的情况下,是否有更容易的方法来突破未知数量的嵌套循环?
我认为这个问题需要更多的解释。
for循环。for循环。for循环。所有的代码都是相互独立的,每次运行代码时,我只需要检查其中的一个。I循环通过的参数取决于某些参数的值。
我可以通过在每种情况下跟踪for循环并使用break number来突破这些循环,但是在100到200个不同的嵌套for循环中这样做是很累人的。如果必须更新嵌套循环的数量,它也将无法工作。
我希望PHP中有一些代码,它可以一次摆脱所有循环,而不需要我跟踪。
发布于 2018-11-06 04:39:17
如果您知道您想要跳出的循环的深度,但不知道从该循环中降了多少级别,则可以使用每个循环检查的变量。
$break_level = 99;
while (...) {
while (...) {
while (...) {
while (...) {
...
if (...) {
$break_level = 2;
break;
}
...
}
if ($break_level <= 3) {
break;
}
}
if ($break_level <= 2) {
break;
}
}
if ($break_level <= 1) {
break;
}
}但这种概括性是几乎不需要的。在我的有生之年,我已经编写了数百万个循环,除了当前循环、它的直接容器或整个嵌套循环集之外,我几乎不需要任何其他东西。在这些情况下,通常有一个变量可以被检查。例如,如果要搜索多维数组,只需设置一个$found变量:
$found = false;
foreach ($array as $level1) {
foreach ($level1 as $level2) {
if (...) {
$found = true;
break;
}
}
if ($found) {
break;
}
}https://stackoverflow.com/questions/53165758
复制相似问题