Switch和IF有什么区别?

mat*_*hew 5 php

我知道这可能是一个简单的问题,但想知道每个人的意见.

PHP中的switch和IF函数有什么区别?我能看到的是"切换"功能使用"IF"功能的地方也适用于那里......如果我错了,请纠正我.

或两者之间的任何表现明智的区别?

Pek*_*ica 19

或两者之间的任何表现明智的区别?

忘掉这个级别上的性能差异 - 可能是微观的,但只有在完成数十万次操作时才能感受到它.switch 是一个更好的代码可读性和可维护性的构造:

switch ($value) 
 {
 case 1:   .... break;
 case 2:   .... break;
 case 3:   .... break;
 case 4:   .... break;
 case 5:   .... break;
 default:  .... break;
 }
Run Code Online (Sandbox Code Playgroud)

大多比干净和可读得多

if ($value == 1) { .... }
elseif ($value == 2) { .... }
elseif ($value == 3) { .... }
elseif ($value == 4) { .... }
elseif ($value == 5) { .... }
else { .... }
Run Code Online (Sandbox Code Playgroud)

编辑:灵感来自Kuchen的评论,为了完整性,一些基准测试(结果会有所不同,这是一个现场评论).请记住,这些是运行1,000次的测试.几个人的差异if完全可以忽略不计的.

  • if和elseif(使用==)174μs
  • if,elseif和else(使用==)223μs
  • if,elseif和else(使用===)130μs
  • 开关/外壳183μs
  • 开关/外壳/默认215μs

结论(来自phpbench.com):

使用开关/ case或if/elseif几乎相同.请注意,测试是没有= =(完全等于),并且比使用==(等于)稍快.

  • 为了完整起见,if-else比switch更快一些.但同样,在这个级别(特别是使用PHP)可读性>性能. (2认同)