检查变量是否具有相反的值?
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;
}
我有这个 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;
}