【发布时间】:2018-11-06 04:29:55
【问题描述】:
我正在编写一些代码,这些代码经常包含在某些条件下需要中断的循环。问题是,有时我嵌套了 3 层,有时 4 层,有时 5 层或更多。
我可以通过写break 3、break 4 和break 5 等来突破,但这需要我跟踪每个嵌套循环内的当前深度。有没有更简单的方法可以在不使用goto 的情况下打破未知数量的嵌套循环?
我认为这个问题需要更多解释。
- 部分代码中有 4 个嵌套的
for循环。 - 在某处有 3 个嵌套的
for循环。 - 然后在其他地方有 5 个嵌套的
for循环。
它们都是相互独立的,每次运行代码我只需要遍历其中一个。我循环的那个取决于某些参数的值。
我可以通过在每种情况下跟踪 for 循环并使用 break number 来摆脱它们,但是为 100-200 组不同的嵌套 for 循环这样做很累。如果必须更新嵌套循环的数量,它也将不起作用。
我希望 PHP 中有一些代码可以在我不跟踪的情况下立即跳出所有循环。
【问题讨论】:
-
可能将代码分解成一个单独的函数,可以在需要时返回?
-
为什么不将它们放在一个函数中,然后使用
return进行突破? -
我想不出任何的原因,答案不是“重构你的代码,这样你就不需要任何东西了,除了
break、continue...或return. -
return 会让你退出一个函数,或者你可以抛出一种特殊类型的异常并只捕获该类型的异常。编程通常被认为是二进制的,但总有第三种状态:异常、未知、未定义、无答案等。
-
嵌套循环的数量怎么会不知道呢?你需要打破的循环是动态确定的吗?
标签: php loops nested-loops break goto