PHP7引入的"??"和"?:"的区别讲解


Posted in PHP onApril 08, 2019

实践出真知~

测试代码

输入测试:

<?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 11
PHP Notice:  Undefined index: d in /home/fanyu/abc.php on line 14
array(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)。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
thinkPHP分页功能实例详解
May 05 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
php实现微信支付之退款功能
May 30 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 PHP
PHP开发实现快递查询功能详解
Apr 08 #PHP
PHP中number_format()函数的用法讲解
Apr 08 #PHP
微信JSSDK分享功能图文实例详解
Apr 08 #PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 #PHP
详解php命令注入攻击
Apr 06 #PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 #PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 #PHP
You might like
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
javascript中this的用法实践分析
2019/07/29 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Python 多维List创建的问题小结
2019/01/18 Python
学习Django知识点分享
2019/09/11 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
汇科协同Java笔试题
2012/03/31 面试题
新郎新娘婚礼答谢词
2014/01/11 职场文书
采购部经理岗位职责
2014/02/10 职场文书
施工材料员岗位职责
2014/02/12 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
护士旷工检讨书
2015/08/15 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers