在什么情况下我应该使用switch语句而不是在PHP中使用if语句?什么时候最好在PHP中使用switch语句?
回答
当某个变量可能是多个不同“案例”中的一个时,您可以使用一个开关在IF语句中,如果需要,可以用多个ELSE IF和很长的条件替换此方法。
真的不是一个简单的方法来回答这个问题,因为没有最好的时间来使用开关。只有当你显示代码时,有人可以说“这对于交换机来说会更好。”尽管如此,最终你只能节省几毫秒。
如果您有一个if
的序列,只需对一个变量测试不同的值,则应该使用switch
声明。 switch语句实际上只是用来使代码看起来更清晰,更清晰,所以如果你觉得它的确如此,那就使用它 - 你的直觉可能是对的。
从来没有。
- 你会忘记案件结束时的break语句,这可能会导致不希望的结果。
- 你只能评估一个条件,否则if是更通用的。
- 这是丑陋的。
也就是说,有时候你特别需要这种贯穿功能,或者你从每个case语句中的函数返回,这样你就不会忘记break。也许这是一个例外。
嗯?为什么这是-3?这是这里最正确的答案。 PHP'switch'有一个奇怪的'continue',它会做“松散比较”,这基本上使得PHP'switch'与其他所有语言都不同。它也不提供性能奖励。不要在PHP中使用它。 – 2010-08-10 19:33:15
-1:您应该在测试过程中发现任何缺失的中断。有时你只需要测试一个项目。国际海事组织,一堆如果 - else比交换机丑。 – GreenMatt 2010-08-10 19:43:08
未来,即使你是对的,也很难认真回答以戏剧性命令开始的问题。 – 2015-07-03 04:39:45
如果您有一系列可以逻辑隔离的相关条件,或者您有一系列条件必须根据单数变量或表达式的状态或结果执行,则应使用开关。
与其他答案相反,开关中的表达式不需要被隔离到单个变量中(尽管它更简单,更易于阅读,并且通常是一个好主意),但是case语句需要从评估的表达式。
一个很好的经验法则是当你有一个容易准备好的表达式,会产生多个结果,然后你必须执行逻辑的基础上使用开关。如果你的表达式是不相关的,只会导致布尔条件,或者变得复杂/相关(比如,如果a然后b,如果c然后b,如果d然后有时b),然后坚持ifs。
- 1. 什么时候在Java中使用switch语句
- 2. 最好在cellForRowAtIndexPath中使用if语句或switch语句吗? - UITableView
- 3. 什么时候最好在PHP中使用异常?
- 4. 什么时候应该尝试消除switch语句?
- 5. PHP switch语句
- 6. switch语句是什么?
- 7. 哪个更好?在switch语句中使用break或return时?
- 8. 什么时候在重构switch语句时选择策略over多态性
- 9. 什么时候header(..)语句在PHP中生效?
- 10. 什么时候最好用C++模板?
- 11. 什么时候使用Ruby和什么时候使用PHP
- 12. 为什么我不能在switch语句中使用NSInteger?
- 13. switch语句中的switch语句?
- 14. 什么时候最好做NSManagedObjectContext保存?
- 15. PHP - 使用switch语句导航
- 16. 什么时候在PHP上使用异常很好?
- 17. 使用“||”在java中的switch语句中
- 18. 什么时候在PHP上使用MVC?
- 19. 什么时候不使用RelativeLayout更好?
- 20. 在switch语句
- 21. 在switch语句
- 22. if语句后使用switch语句
- 23. 在LESS CSS中使用JavaScript/Switch语句
- 24. 在AVQueuePlayer中使用Switch语句?
- 25. 在while循环中使用switch语句
- 26. 在switch语句中使用复选框
- 27. 如何在Angularjs中使用Switch语句
- 28. 如何在Switch语句中使用IF
- 29. 在switch语句中使用属性?
- 30. 在dplyr的mutate中使用switch语句
值得一提的是,这真的适用于任何具有'switch'等价语言的语言。 – jtbandes 2010-08-10 19:16:33
在C中,在某些情况下,switch语句可能比if语句快得多。你在PHP中没有这种优势。 – Sjoerd 2010-08-10 19:17:55
@jtbandes,Sjoerd:性能可能是OP的关注中最小的,尽管:) – BoltClock 2010-08-10 19:25:15