下面代码输出结果为

2020-06-10
$a = 3;
$b = 5;
if ($a = 5 || $b = 7) {
    $a++;
    $b++;
}
echo '$a = ', $a, ', $b = ', $b;

首先看 $a = 5 || $b = 7

|| 运算符优先级高于 =

所以表达式变为 $a = (5 || $b = 7);

此时 $a = true;$b = ?

由于 || 是短路运算符,前面为true 后面不执行,所以 $b 还是原值 5。

递增或递减布尔值没有效果。

递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1

所以 $a = true;$b = 6;

echo true 将会输出 1。

echo true;
echo PHP_EOL;
echo false;