【发布时间】:2018-03-12 21:17:50
【问题描述】:
在将新的 PHP7 空合并运算符与三元运算符一起使用时,我遇到了意外行为。
具体情况(伪代码):
function a()
{
$a = 1;
$b = 2;
return $b ?? (false)?$a:$b;
}
var_dump(a());
结果是 int(1)。
谁能解释一下为什么?
【问题讨论】:
-
为了我自己的理智和任何未来使用我的代码的编码人员,我总是在这样的表达式中明确使用括号。我喜欢陈述我的意图,而不是依赖优先级或其他副作用。
-
这是一个好点,我的坏点,谢谢
标签: php ternary-operator null-coalescing-operator