Ald*_*dos 4 php ternary-operator null-coalescing-operator
将新的 PHP7 空合并运算符与三元运算符结合使用时,我遇到了意外行为。
具体情况(伪代码):
function a()
{
$a = 1;
$b = 2;
return $b ?? (false)?$a:$b;
}
var_dump(a());
Run Code Online (Sandbox Code Playgroud)
结果是 int(1)。
谁能解释我为什么?
您的空格不反映 php 评估表达式的方式。请注意, the??具有比三元表达式更高的优先级。
你得到的结果是:
($b ?? false) ? $a : $b;
Run Code Online (Sandbox Code Playgroud)
这是$a只要$b不是null或计算结果为false。
| 归档时间: |
|
| 查看次数: |
393 次 |
| 最近记录: |