1、在PHP7中出现了NULL合并操作符,具体的运算形式是:
$a ?? $b ?? $c
该表达式返回从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。详情参见:language.operators.comparison
最开始接触这个运算符是在项目中看见别人在用,实现的效果貌似和三元运算符一样,即 我以为下面式子成立
$c = $a ?? $b; <=> $c = $a ? $a : $b;
后来才发现,并不是这样的!只有在$a==null
的时候,上述式子才成立,即使$a==0
也是不成立的。
2、看如下测试:
测试1
<?php
$a = 0;
$b = 1;
$c = $a ? $a : $b;
echo $c . "\n";
$d = $a ?: $b;
echo $d . "\n";
$e = $a ?? $b;
echo $e . "\n";
运行结果是:
1
1
0
测试2
<?php
$a = null;
$b = 1;
$c = $a ? $a : $b;
echo $c . "\n";
$d = $a ?: $b;
echo $d . "\n";
$e = $a ?? $b;
echo $e . "\n";
运行结果是:
1
1
1