空合并运算符(??)是代替 ?:isset()函数的结合。
如果它存在并且不为null,空合并运算符返回它的第一个操作数;否则返回第二个操作数。

例子如下:

  1. <?php
  2. # 注意,在PHP中,null 并不绝对等于 ''
  3. $test = null;
  4. echo isset($test) ? $test : '我爱小黄牛<br/>';
  5. echo !empty($test) ? $test : '我爱小黄牛<br/>';

如果上面的逻辑使用空并运算符,可以这样实现:

  1. <?php
  2. $test = null;
  3. echo $test ?? '我爱小黄牛<br/>';
  4. # 当$test为null时,上面三者的判断是等价的
  5. # 当$test为''时,第一和第三条判断是等价的

解释:当$test不为null时,返回$test,否则返回 ?? 后面的参数;

同时,??空并运算符也是可以两个同时使用的,类型三元运算符,
假设我们要用空并运算符,替代下面的语句;
return isset($_GET['id']) ? $_GET['id'] : '变量不存在';
就可以这样写:
return $_GET['id'] ?? $_GET['id'] ?? '变量不存在';