开关语句与 if 语句

我陷入了两难境地。哪个最好使用以及为什么..开关还是如果?

switch ($x) 
{
case 1:
  //mysql query 
  //echo something
  break;
case 2:
  //mysql query 
  //echo something
  break;
}

...

if ($x == 1) {
    //mysql query 
    //echo something    
} 

if ($x == 2) {   
    //mysql query 
    //echo something
}  

答案 1

它们有不同的含义。

当满足条件时,第一个示例将停止。

第二个将测试两次。$x

您可能希望将第二个设置为 .这意味着一旦一个条件的计算结果为 true,该块将被跳过。ifelse if

但是,如果你想知道哪一个是最快的,你应该考虑哪一个最有效地传达了我想做的事情。它们很可能最终成为目标体系结构中的条件跳转。

过早优化...(你知道其余的:P)


答案 2

当有两个以上的选择时,开关更好。它主要是为了代码的可读性和可维护性,而不是性能。

然而,正如其他人所指出的那样,你的例子并不等同。


推荐