检查变量是否具有相反的值?

时间:2019-02-06 17:23:57

标签: php variables if-statement conditional

我有这个PHP if语句,我正在试图弄清楚。 我知道结果是什么,但我以前从未见过(可能是我的错)。 谁能帮助我理解下面的代码?为什么显示$a而不显示$b?因为$a排在第一位?

<?php
$a = 'has a value';
$b = 'this one too!';
if (($href = $a) || ($href = $b)) { 
    echo $href;
    //Result is 'has a value'.  
}
?>

1 个答案:

答案 0 :(得分:4)

||使用“短路”评估。如果表达式的第一部分为true,则将不评估第二部分。在PHP中,

  

赋值表达式的值就是赋值。

quoted from the = documentation

因此,在这种情况下,表达式($href = $a)的值为分配值'has a value'。该字符串的值为true(请参阅“ converting to boolean”),因此将不执行第二个赋值。


仅供参考,对于另一种重复性较低的书写方式,您可以执行以下操作:

if ($href = $a ?: $b) { 
    echo $href;
}