我知道这可能是一个简单的问题,但想知道每个人的意见。
PHP中的switch和IF函数有什么区别?我能看到的是“切换”功能在哪里使用“IF”功能也适用于那里......如果我错了,请纠正我..
或两者之间的任何表现明智差异?
答案 0 :(得分:19)
或两者之间的任何表现明智差异?
忘记这个级别的性能差异 - 可能是微观的,但是只有在完成数十万次操作时才会感觉到它。 switch
是一个更好的代码可读性和可维护性的构造:
switch ($value)
{
case 1: .... break;
case 2: .... break;
case 3: .... break;
case 4: .... break;
case 5: .... break;
default: .... break;
}
比
更干净,更易读if ($value == 1) { .... }
elseif ($value == 2) { .... }
elseif ($value == 3) { .... }
elseif ($value == 4) { .... }
elseif ($value == 5) { .... }
else { .... }
编辑:受Kuchen的评论启发,为了完整起见,有些benchmarks(结果会有所不同,这是一个现场的)。请注意,这些是 1,000次的测试。几个if
的差异是完全可以忽略。
结论(来自phpbench.com):
使用开关/案例或if / elseif几乎相同。请注意,测试是uning ===(完全等于),并且稍微快于使用==(等于)。
答案 1 :(得分:3)
如果你有简单的条件,比如某些东西等同于其他东西,那么开关是理想的。
例如,不要执行以下操作:
if($bla == 1) {
} elseif($bla == 2) {
} elseif($bla == 3) {
} etc...
最好这样做:
switch($bla) {
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
default:
...
break;
}
或者,如果您有复杂的条件,则应使用if / else。
我认为这只是一个意见问题 - 有些人根本不使用switch语句,并坚持使用if / else。
答案 2 :(得分:2)
不,你是对的。
这些陈述之间没有太大区别
你可以使用自己喜欢的。
请记住,如果必须使用超过3-4个连续条件 - 这意味着您很可能遇到设计错误。
通常,您可以使用循环或更清晰的应用程序设计替换此类语句。
答案 3 :(得分:2)
Switch Case语句是if / else语句的替代方法,它执行几乎相同的操作。换句话说,Switch Case语句逐行或逐条语句执行,并且一旦PHP找到评估结果为true的case语句,它将执行与该case语句相对应的代码。 if / else和switch语句之间的根本区别在于,if / else语句基于对if语句中表达式的求值选择语句的执行,而Switch Case语句通常基于键盘选择语句的执行。命令。
答案 4 :(得分:0)
不要忘记,交换机不一定像简单的if语句那样工作。记住一个开关不需要在每个案例结束时中断并且让那个中断允许你“堕落”到下一个案例,也可以允许一些有趣且有些复杂的“ifs”。