当我在PHP网站上阅读时,我正在编写一个switch case:
Thus, it is important not to forget break statements (even though you may want to avoid supplying them on purpose under certain circumstances).
没有break语句的switch case非常适合我想做的事情。我想要在匹配的一个下面的所有情况执行。为什么这是错误的,以不同方式做到这一点的最佳方式是什么?
对所有语言都不好,还是只对PHP?为什么呢?
编辑:无论是否存在问题,有没有办法在没有开关的情况下做同样的事情?
答案 0 :(得分:4)
正如它所指出的那样 - 即使您可能希望在某些情况下避免故意提供。只要你知道自己在做什么,那么坠入案件不是问题。就个人而言,我认为使用案例陈述是如此有用(而不是&&'s,但那只是我)是一个很大的原因。
所以答案是,对任何特定的语言来说都不错,因为你没有与语言作斗争。
答案 1 :(得分:0)
关于switch语句落实执行的观点通常反映了关于goto的观点。
Switch应该是互斥的,但是可以通过使用goto关键字来获取(在c#中)。由于PHP添加了goto关键字,您可以执行类似的操作。转换文档中的MSFT示例为here。
就个人而言,我发现要明确我需要执行的代码是非常明确的,这些代码是互斥的。我发现我添加/删除了切换语句的情况,因此在使用允许直接执行的语言时确保它们被正确排序会让人头疼。
答案 2 :(得分:-1)
总之:资源
如果您使用 IF 构造,解释器将检查每种可能性,以便查找 TRUE 或 FALSE ,此浪费资源,内存和 CPU 。 使用 BREAK SWITCH 语句的所有要点是 SPARE资源,因为当找到匹配条件时,解释程序将 BREAK 并且不会尝试找到更多匹配项。
您可以使用 IF , ELSE 或 ELSEIF 构造轻松完成您所做的工作,而不是使用 SWITCH < / strong>声明,如果你不介意浪费资源,当然。