??
操作符是 PHP 7 引入的特性,它的使用方式与 ?:
的区别总结如下:
1 |
|
1 | string(0) "" |
??
的判断形式相当于 isset
函数,即:
1 | //$test1 = $str ?? "test"; |
isset
函数判断结果为 false
的几种情况:
- 变量未定义
- 变量值为
null
(也就是说值为0
"0"
都会返回true
) - 检查字符串的非数字偏移量
而 ?:
的判断相当于 empty
函数,即:
1 | //$test2 = $str ?: "test"; |
empty
函数判断结果为 false
的几种情况:
- 空字符串
""
- 整数
0
- 浮点数
0.0
- 字符串
"0"
null
false
- 空数组
[]
- 声明了但是没有值的变量
isset
和 empty
函数官方文档: