我知道这可能是一个简单的问题,但想知道关于此的每一个意见。Switch和IF有什么区别?
在开关和IF函数之间的区别是什么?我可以看到的是,凡是“开关”功能使用“中频”功能也适用于那里..如果我错了我纠正我。
或两者之间的任何性能明智的区别?
我知道这可能是一个简单的问题,但想知道关于此的每一个意见。Switch和IF有什么区别?
在开关和IF函数之间的区别是什么?我可以看到的是,凡是“开关”功能使用“中频”功能也适用于那里..如果我错了我纠正我。
或两者之间的任何性能明智的区别?
或两者之间的任何性能明智差异?
忘掉这个级别上的性能差异 - 可能是微观的,但只有在进行数十万次操作时(如果有的话),您才会感受到它。 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 { .... }
编辑:由库亨的评论启发,为了完整性一些benchmarks(结果会有所不同,这是一个活的)。请记住,这些是运行1000次的测试。一对if
的差异是完全可以忽略。
结论(来自phpbench.com):
使用switch /箱或如果/ 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。
不过,不要忘记,开关并不一定是简单的if语句。记住,在每种情况结束时交换机不需要中断,并且让中断可以让你'跌入'下一个案例,也可以允许一些有趣而复杂的'ifs'。
不,你说得对。
这些陈述之间没有太大的区别。
你可以使用你喜欢的。
请记住,如果您必须使用超过3-4个连续条件 - 这意味着您很可能有设计缺陷。
通常,您可以用循环或更清晰的应用程序设计替换这样的语句。
关于设计的好处。一个巨大的switch语句在一个循环中几乎总是会变得更好,或者出现错误。 – 2010-07-05 11:47:00
我想答案是“它取决于”或“没有性能差异”,但我会首先要求一个例子.. – 2010-07-05 10:39:42