这个新特性算是一个语法糖,可以方便开发人员的编写。
以前我们想实现如果某个变量存在且值不为null,则输出该变量,不存在则输出默认值的需求,通常会是这样:
echo isset($a)? $a : 0;
会先用isset判断$a的变量是否设置,如果设置了,就输出$a的值,否则输出默认值。php的开发人员发现日常开发中存在大量同时使用三元表达式和 isset()的情况,所以新增了一个null合并运算符(??)这个语法糖。
具体使用方法如下:
echo $a??0;
是不是相较于上面的代码异常的简洁了。
当然,这个只适用于判断变量是否存在且不为null的情况,不适用于变量值是否为空的判断,请注意。判断变量是否为空,还是要使用完整的三元运算符的。
例如,前端发送请求,page字段没传时,后端接收的时候就可以这样:
$page = $_GET['page'] ?? 1; // 如果传page字段了,则使用page,如果没传,则默认请求第一页内容,当然后续的page字段的合法性另外判断了