PHP7 引入的“??” 和“?:”的区别
2022-07-28 15:20:24
113
{{single.collect_count}}

实践出真知~

测试代码

输入测试:

<?php$array = ['a' => 1,'b' => 2,'c' => [],];$a = $array['c'] ?? 0;$b = $array['c'] ?: 0;$c = $array['d'] ?? 0;$d = $array['d'] ?: 0;$e = $array['c'] ? 1 : 0;$f = isset($array['c']) ? 1 : 0;$g = $array['d'] ? 1 : 0;$h = isset($array['d']['e']) ? 1 : 0;$i = !empty($array['c']) ? 1 : 0;$j = !empty($array['d']) ? 1 : 0;var_dump($a);var_dump($b);var_dump($c);var_dump($d);var_dump($e);var_dump($f);var_dump($g);var_dump($h);var_dump($i);var_dump($j);

输出结果:

PHP Notice:Undefined index: d in /home/fanyu/abc.php on line 11PHP Notice:Undefined index: d in /home/fanyu/abc.php on line 14array(0) {}int(0)int(0)int(0)int(0)int(1)int(0)int(0)int(0)int(0)

结论

  1. $a ?? 0 等同于 isset($a) ? $a : 0。

  2. $a ?: 0 等同于 $a ? $a : 0。

  3. empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)。

  4. isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)。

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}