首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Switch和IF之间的区别是什么?

Switch和IF之间的区别是什么?
EN

Stack Overflow用户
提问于 2010-07-05 18:37:33
回答 5查看 4.1K关注 0票数 5

我知道这可能是一个简单的问题,但我想知道每个人对此的看法。

PHP中的switch和IF函数有什么区别??我能看到的是,"switch“函数在哪里使用" if”函数,如果我错了,它也会应用there..correct me。

或者两者之间的性能差异??

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-05 18:43:46

或两者之间的任何性能差异??

忘掉这个层面上的性能差异--可能有一个微观的差异,但只有在进行数十万次操作时才会感觉到它。switch是一种更好的代码可读性和可维护性的构造:

代码语言:javascript
复制
switch ($value) 
 {
 case 1:   .... break;
 case 2:   .... break;
 case 3:   .... break;
 case 4:   .... break;
 case 5:   .... break;
 default:  .... break;
 }

在大多数情况下,比起

代码语言:javascript
复制
if ($value == 1) { .... }
elseif ($value == 2) { .... }
elseif ($value == 3) { .... }
elseif ($value == 4) { .... }
elseif ($value == 5) { .... }
else { .... }

编辑:受库晨的评论启发,为了完整起见,请使用一些benchmarks (结果会有所不同,这是一个实时的)。请记住,这些测试会运行1000次的。对于几个if的区别是完全可以忽略的。

  • if和else if(使用==) 174µs

  • if,elseif和else (使用==) 223µs

  • if,else if和else(使用===) 130µs

  • switch / case 183µs

  • switch / case / default 215µs

结论(来自phpbench.com):

使用开关/case或if/case if几乎是相同的。请注意,该测试取消了=== (恰好等于),并且比使用== (等于)略快。

票数 19
EN

Stack Overflow用户

发布于 2010-07-05 18:47:11

如果您有简单的条件,例如,如果某些东西等同于其他东西,那么切换是理想的。

例如,而不是执行以下操作:

代码语言:javascript
复制
if($bla == 1) {

} elseif($bla == 2) {

} elseif($bla == 3) {

} etc...

最好是这样做:

代码语言:javascript
复制
switch($bla) {
  case 1:
    ...
    break;
  case 2:
    ...
    break;
  case 3:
    ...
    break;
  default:
    ...
    break;
}

或者,如果你有复杂的条件,你应该使用if/else。

我认为这只是一个观点问题--有些人根本不使用switch语句,而是坚持使用if/else。

票数 3
EN

Stack Overflow用户

发布于 2010-07-05 19:16:35

不,你是对的。

这些陈述之间没有太大的区别。

你可以用你喜欢的。

请记住,如果您必须使用3-4个以上的连续条件-这意味着您最有可能存在设计缺陷。

通常,您可以用循环或更清晰的应用程序设计来替换这样的语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3178801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档