我处于两难境地。哪个最好用,为什么..切换或如果?
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
}
答案 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。