php7新特性之null合并运算符

407 阅读1分钟

这个新特性算是一个语法糖,可以方便开发人员的编写。

以前我们想实现如果某个变量存在且值不为null,则输出该变量,不存在则输出默认值的需求,通常会是这样:

echo isset($a)? $a : 0;

会先用isset判断$a的变量是否设置,如果设置了,就输出$a的值,否则输出默认值。php的开发人员发现日常开发中存在大量同时使用三元表达式和 isset()的情况,所以新增了一个null合并运算符(??)这个语法糖。

具体使用方法如下:

echo $a??0;

是不是相较于上面的代码异常的简洁了。

当然,这个只适用于判断变量是否存在且不为null的情况,不适用于变量值是否为空的判断,请注意。判断变量是否为空,还是要使用完整的三元运算符的。

例如,前端发送请求,page字段没传时,后端接收的时候就可以这样:

$page = $_GET['page'] ?? 1; // 如果传page字段了,则使用page,如果没传,则默认请求第一页内容,当然后续的page字段的合法性另外判断了