PHP7 null 合并运算符注意事项

php7 新增了 null 合并运算符 ??,刚开始接触的时候没有仔细看文档,还一直纳闷这跟三元运算符的省略写法 ( ?: ) 什么区别.

$a = '';
$b = 'bbb';
var_dump($a ?? $b); // 输出: string ''
var_dump($a ?: $b); // 输出: string 'bbb'

$a = false;
$b = 'bbb';
var_dump($a ?? $b); // 输出: boolean false
var_dump($a ?: $b); // 输出: string 'bbb'

$a = null;
$b = 'bbb';
var_dump($a ?? $b); // 输出: string 'bbb'
var_dump($a ?: $b); // 输出: string 'bbb'

也就是只有$a 为 null 时才会输出 $b

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4

好像是说输出从左至右第一个不为null的数

6年前 评论

@doobi 嗯, 对, 所以取名叫 null 合并运算符 :joy: , 如果两个都是 null 的话还是会返回 null

6年前 评论
uax

以前我们可能碰到根据 $a 来确定 $c:$c = is_set($a) ? $a : $b;

现在可以简写为:$c = $a ?? $b;

6年前 评论

echo $a ?? $b;
同等于
echo isset($a) ? $a : $b;

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!