php7 中,新增了两个很有意思的运算符 ?? 和 ?:
那??( NULL 合并运算符)和?:的区别是什么?
(1)??是只要前面的变量定义过了(即isset()为真)或前面表达式为真,则返回前面的值。
(2)?:则是运算符前面的表达式或变量值需为真则取前面的值,为假则取后面的值。但前提是前面的变量需要先定义过了已存在。
例:
echo $i ?? 3 . PHP_EOL;
$arr = [];
echo $arr['xxx'] ?? 'yyy';
上面的相当于:
echo isset($arr['xxx']) ? $arr['xxx'] : 'yyy';
对于 ?: 则略有不同:
如果打开php报错,对于未定义变量则会产生一条warning。
如果确认变量已经设置,建议使用?:
其它的情况建议使用 ??
在不确定变量是否存在的情况下,会有变量表达式值是空,不能准确设置初始值的情况。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。