PHP elseif语句;将elseif分离或压缩为一个


PHP elseif statements; separate elseif, or compressed into one?

我基本上想知道通过单独的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个)。但同样,差异很小,也可能是一样的。

不,它们在功能上是等效的。