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

Check if variable has value the opposite way?

我有这个 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'.  
}
?>

|| 使用 "short-circuit" 评估。如果表达式的第一部分为真,则不会计算第二部分。在 PHP、

The value of an assignment expression is the value assigned.

(quoted from the = documentation)

所以在这种情况下,表达式 ($href = $a) 具有指定值 'has a value' 的值。该字符串的计算结果为真(请参阅“converting to boolean”),因此不会执行第二个赋值。


仅供参考,对于重复性较低的另一种写法,您可以这样做:

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