??
$a ?? 0
// 等同于
isset($a) ? $a : 0
isset: 判断一个变量是否设置
值为 false、00、0、’0′ 返回 true
?:
$a ?: 0
// 等同于
$a ? $a : 0
empty: 判断一个变量是否为空
null、false、00、0、’0′ 返回 true
empty 和 if
https://blog.csdn.net/weixin_41793489/article/details/94617596
https://www.runoob.com/php/php-empty-function.html
empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。这意味着 empty() 本质上与 !isset($var) || $var == false 等价。
if 语句用来判断所包含值的布尔值,即 true 和 false 两值,当转换为 boolean 时,以下值被认为是 FALSE:
- 布尔值 FALSE 本身
- 整型值 0(零)
- 浮点型值 0.0(零)
- 空字符串,以及字符串 "0"
- 不包括任何元素的空数组
- 特殊类型 NULL(包括尚未赋值的变量)
- 从空标记生成的 SimpleXML 对象
所有其它值都被认为是 TRUE(包括任何资源 和 NAN)。-1 和其它非零值(不论正负)一样,被认为是 TRUE!
为什么要引入语法糖?
if (isset($a)) {
$b = $a;
} else {
$b = 0;
}
// 或
$b = isset($a) ? $a : 0;
上面👆🏻复杂度是 2
$b = $a ?? 0;
上面👆🏻复杂度是 1,更简洁
其他
在严格模式下,下面代码会报错:
$arr = array();
$arr['x1']
over