切换vs if语句

时间:2010-11-22 02:32:20

标签: php if-statement conditional switch-statement

我处于两难境地。哪个最好用,为什么..切换或如果?

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
}  

6 个答案:

答案 0 :(得分:30)

他们有不同的含义。

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

第二个将测试$x两次。

您可能希望将第二个if设为else if。这意味着只要一个条件评估为 true ,就会跳过该块。

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

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

答案 1 :(得分:7)

当有两个以上的选择时,切换会更好。它主要用于代码可读性和可维护性,而不是性能。

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

答案 2 :(得分:5)

首先你所拥有的是不一样的

switch(value)
  case condition1:
    break;
  case condition2:
    break

if (condition1) {
}
if (condition2) {
}

这些是同义词

switch(value)
  case condition1:
    break;
  case condition2:
    break

if (condition1) {
}
else if (condition2) {
}

第二,如果你在谈论我的第二个例子,其中两个是同义词。然后使用switch语句可以减轻编写大量if ..else if语句的痛苦....

在我看来,切换也可以提供更多的可读性。但即便如此,有时候使用if...else会更好,特别是对于复杂的逻辑。

答案 3 :(得分:5)

switch语句会更快,因为它只检查一次值。

答案 4 :(得分:1)

如果你有一个变量,一组可能的值,并且你想对每个值执行不同的操作,那就是switch-case的用途。

切换语句使您更明显地只是确定变量具有哪些允许值。

如果您有更复杂的条件或要考虑的多个变量,请使用if语句。

答案 5 :(得分:1)

这两个陈述都是通过比较某种参数然后显示结果的决策声明。 switch语句无疑比if语句更快,但是if语句比switch语句有更大的优势,当你必须使用逻辑操作时,(<,>,< =,> =,!= ,==)。每当你遇到逻辑操作时,你都会被使用switch语句打掉,但不要担心还有另一种方法可以用来达到你的目标,即if语句或if-else或if-else-if声明。我建议你大部分时间都使用if-else而不是switch。