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 相关文章推荐
资料注册后发信小技巧
Oct 09 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php 中文处理函数集合
Aug 27 PHP
Wordpress php 分页代码
Oct 21 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
php自动获取目录下的模板的代码
Aug 08 PHP
php之XML转数组函数的详解
Jun 07 PHP
PHP中new static() 和 new self() 的区别介绍
Jan 09 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php微信公众号开发之快递查询
Oct 20 PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 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中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
PHP编写RESTful接口
2016/02/23 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
javascript连续赋值问题
2015/07/08 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
react-navigation之动态修改title的内容
2018/09/26 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
Python中replace方法实例分析
2014/08/20 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
python2与python3共存问题的解决方法
2018/09/18 Python
python pandas生成时间列表
2019/06/29 Python
python将时分秒转换成秒的实例
2019/12/07 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
数控技术应用个人求职信范文
2014/02/03 职场文书
保送生自荐信范文
2015/03/26 职场文书
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android