我基本上想知道通过单独的elseif语句枚举所有可能的条件或将它们组合为一个条件(除了可读性)之间是否有区别。
示例1:
if($x == 0)
{
(condition A)
}
elseif($x == 1)
{
(condition A)
}
elseif($x == 2)
{
(condition A)
}
else
{
(condition B)
}
示例2:
if($x == 0 || $x == 1 || $x == 2)
{
(condition A)
}
else
{
(condition B)
}
显然,示例2更可读,但它是否也更快(或更可取)?
我为您的代码看到的最干净的选项如下:
switch($x) {
case 0:
case 1:
case 2:
(condition A)
break;
default:
(condition B)
break;
}
您也可以执行以下操作:
if ($x <= 2) {
// Condition A
} else {
// Condition B
}
但要回答您的问题:
在这两个语句中,理论上第二个语句会更快,但这只是因为PHP将递归地解析一个语句,而不是3个单独的语句。然而,差异如此之小,以至于你可能无法准确测量。这意味着它们可能完全相同。我在本文上面的回答将比提供的任何一个例子都快,因为只有1个比较(而不是3个)。但同样,差异很小,也可能是一样的。
不,它们在功能上是等效的。