我听说有传言称PHP正计划引入"goto"命令.该怎么办?
我尝试了一下,但没有找到任何描述性的东西.我明白这不会是一个" GOTO 10
"式的命令......
他们没有添加真正的GOTO,而是扩展BREAK关键字以使用静态标签.基本上,它将增强断开switch嵌套if语句的能力.这是我发现的概念示例:
当然,一旦GOTO"谣言"消失,就没有什么可以阻止一些邪恶的家伙传播额外的COMEFROM笑话.做你的脚趾.
也可以看看:
http://www.php.net/~derick/meeting-notes.html#adding-goto
我总是对PHP设计师的愚蠢程度感到惊讶.如果使用GOTO的目的是为了使多重嵌套循环更有效率,那么有一种更好的方法:标记代码块和可以引用标签的break语句:
a: for (...) { b: for (...) { c: for (...) { ... break a; } } }
现在很清楚退出哪个循环/块,退出是结构化的; 你无法用真正的东西来获得意大利面条代码.
这是一个古老的,古老的想法.自70年代以来,设计良好的控制流程管理结构已经得到了解决,所有这些的文献早已写完.Bohm-Jacopini定理表明你可以使用函数调用,if-then-else和while循环来编写任何代码.在实践中,为了打破深层嵌套的块,Bohm-Jacopini样式编码需要额外的布尔标志("设置此标志以摆脱循环")这是笨拙的编码明智和低效(你不希望这样的标志在你的内环).使用if-then-else,各种循环(while,for)和break-to-labeled块,您可以编写任何算法而不会降低效率.人们为什么不阅读文献,而不是复制C所做的事情?哎呀.