【发布时间】:2011-03-11 20:44:53
【问题描述】:
我知道这可能是一个简单的问题,但想知道每个人对此的看法。
PHP中的switch和if函数有什么区别??我所看到的是“开关”功能使用“IF”功能的地方也适用..如果我错了请纠正我..
或者两者之间的任何性能差异??
【问题讨论】:
-
我猜答案是“视情况而定”或“没有性能差异”,但我想先举个例子..
标签: php
我知道这可能是一个简单的问题,但想知道每个人对此的看法。
PHP中的switch和if函数有什么区别??我所看到的是“开关”功能使用“IF”功能的地方也适用..如果我错了请纠正我..
或者两者之间的任何性能差异??
【问题讨论】:
标签: php
或者两者之间的任何性能差异??
忘记这个级别的性能差异 - 可能存在微观差异,但只有在执行数十万次操作时才会感觉到它,如果有的话。 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):
使用 switch/case 或 if/elseif 几乎相同。请注意,测试不使用 ===(完全等于),并且比使用 ==(等于)稍快。
【讨论】:
如果您有简单的条件,例如某事物等同于其他事物,那么开关是理想的。
例如,不要执行以下操作:
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。
【讨论】:
但不要忘记,switch 不一定像简单的 if 语句一样工作。记住,切换不需要在每个案例结束时中断,并且离开该中断允许您“通过”到下一个案例,也可以允许一些有趣且有些复杂的“如果”。
【讨论】:
不,你是对的。
这些陈述之间没有太大区别。
你可以用你喜欢的。
请记住,如果您必须使用超过 3-4 个连续条件 - 这意味着您很可能存在设计错误。
通常您可以用循环或更清晰的应用程序设计替换这样的语句。
【讨论】:
Switch Case 语句是 if/else 语句的替代方案,它的作用几乎相同。 Switch Case 语句逐行或逐语句执行,换句话说,一旦 PHP 找到一个计算结果为 true 的 case 语句,它就会执行与该 case 语句对应的代码。 if/else 和 switch 语句的根本区别在于 if/else 语句根据 if 语句中表达式的评估来选择语句的执行,但 Switch Case 语句通常基于键盘来选择语句的执行命令。
【讨论】: