PHP7的双问号“??”语法以及和“?:”的区别

 剑鱼论坛 发表于 2019年12月06日 PHP  194
剑鱼论坛
LV 6 高中
最后在线:5小时前
加入时间:312天前
主帖:89  跟帖:48

PHP7中增加了双问号“??”的语法,我们来讨论一下这个新语法怎么使用,先看下面这个简单的语句:

echo $a ?? -1;

这行语句是一个判断语句,判断变量$a是否存在,存在的话输出变量$a,否则输出-1。很显然由于变量$a没有被定义,所以输出的结果是“-1”。

我们再来看下面这行简单的语句:

echo $a ? 1 : -1;

上面这行代码是判断变量$a是否为空,如果为空的话输出“-1”,否则输出“1”。这行代码的输出结果也是“-1”,那么上面这两者有什么区别呢?

“??”语句判断的是变量$a是否存在,“?:”语句判断的是变量$a是否为空,当然如果变量不存在的话,也是为空的。所以“?:”的结果包含了“??”的结果。

我们再来看以下两个例子:

例子一:

$a = 0;
echo $a ?? -1;

例子二:

$a = 0;
echo $a ? 1 : -1;

我们运行上面两个示例后可以发现,例子一的输出是“0”,因为变量$a已经被赋值了,是一个已经存在的变量,所以输出了变量$a本身的值“0”。例子二输出的是“-1”,因为值为“0”的变量依旧会被认为是空的,所以输出了“-1”。

通过以上示例,我们发现双问号“??”判断的是是否存在,“?:”判断的是是否为空。

论坛主帖
155
论坛跟帖
129
在线访客
8
今日主帖
0
今日跟帖
0
今日注册
0
23
http://jianyuluntan.com/gentie.html
http://jianyuluntan.com/postzan.html
http://jianyuluntan.com/postcai.html
http://jianyuluntan.com/postshoucang.html
http://jianyuluntan.com/gentiezan.html
http://jianyuluntan.com/gentiecai.html
http://jianyuluntan.com/huifu.html
http://jianyuluntan.com/xiugai.html
http://jianyuluntan.com/shanchugentie.html
1
XzA=
1
© 2019 - 2020 剑鱼论坛 版权所有
Powered by JianYuLunTan
剑鱼论坛 976666861
http://jianyuluntan.com/feedback.html
http://jianyuluntan.com/qiandao.html
http://jianyuluntan.com/denglu.html
0
http://jianyuluntan.com/adenglu.html
0
剑鱼论坛