?? 操作符是 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" nullfalse- 空数组
[] - 声明了但是没有值的变量
isset 和 empty 函数官方文档: