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个人网站架设连环讲(一)
Oct 09 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
PHP中is_file()函数使用指南
May 08 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
Yii实现显示静态页的方法
Apr 25 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
PHP标准库(PHP SPL)详解
Mar 16 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封装的连接Mysql类及用法分析
2015/12/10 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
Python实现子类调用父类的方法
2014/11/10 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
党员公开承诺践诺书
2014/03/25 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2015年三万活动总结
2015/03/25 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
2016年校长新年寄语
2015/08/17 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers