空合并运算符(??
)是代替 ?:
与 isset()
函数的结合。
如果它存在并且不为null
,空合并运算符返回它的第一个操作数;否则返回第二个操作数。
例子如下:
<?php
# 注意,在PHP中,null 并不绝对等于 ''
$test = null;
echo isset($test) ? $test : '我爱小黄牛<br/>';
echo !empty($test) ? $test : '我爱小黄牛<br/>';
如果上面的逻辑使用空并运算符,可以这样实现:
<?php
$test = null;
echo $test ?? '我爱小黄牛<br/>';
# 当$test为null时,上面三者的判断是等价的
# 当$test为''时,第一和第三条判断是等价的
解释:当$test
不为null
时,返回$test
,否则返回 ??
后面的参数;
同时,??
空并运算符也是可以两个同时使用的,类型三元运算符,
假设我们要用空并运算符,替代下面的语句;return isset($_GET['id']) ? $_GET['id'] : '变量不存在';
就可以这样写:return $_GET['id'] ?? $_GET['id'] ?? '变量不存在';