前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP7新增的NULL合并运算符??和?:的区别

PHP7新增的NULL合并运算符??和?:的区别

原创
作者头像
vimsudoers
修改2020-03-02 09:25:40
4520
修改2020-03-02 09:25:40
举报
文章被收录于专栏:PHP点滴

php7 中,新增了两个很有意思的运算符 ?? 和 ?:

那??( NULL 合并运算符)和?:的区别是什么?

两种运算符差别

(1)??是只要前面的变量定义过了(即isset()为真)或前面表达式为真,则返回前面的值。

(2)?:则是运算符前面的表达式或变量值需为真则取前面的值,为假则取后面的值。但前提是前面的变量需要先定义过了已存在。

例:

代码语言:javascript
复制
  echo $i ?? 3 . PHP_EOL;
  $arr = [];
  echo $arr['xxx'] ?? 'yyy';

上面的相当于:

代码语言:javascript
复制
  echo isset($arr['xxx']) ? $arr['xxx'] : 'yyy'; 

对于 ?: 则略有不同:

如果打开php报错,对于未定义变量则会产生一条warning。

使用场景

如果确认变量已经设置,建议使用?:

其它的情况建议使用 ??

在不确定变量是否存在的情况下,会有变量表达式值是空,不能准确设置初始值的情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 两种运算符差别
  • 使用场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档