PHP 7 语法糖 ?? 和 ?:

原创
2021/12/19 22:35
阅读数 122
AI总结

??

$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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部