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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
用缓存实现静态页面的测试
Dec 06 PHP
表单复选框向PHP传输数据的代码
Nov 13 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
php+ajax登录跳转登录实现思路
Jul 31 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
通过PHP实现获取访问用户IP
May 09 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截取中文字符串的问题
2006/07/12 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
理解Python垃圾回收机制
2016/02/12 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
解析Python3中的Import
2019/10/13 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
python自定义函数def的应用详解
2020/06/03 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
光电信息专业应届生求职信
2013/10/07 职场文书
留守儿童工作方案
2014/06/02 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
导师对论文的学术评语
2015/01/04 职场文书
Python图片检索之以图搜图
2021/05/31 Python
MySQL池化框架学习接池自定义
2022/07/23 MySQL