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 相关文章推荐
Cakephp 执行主要流程
Mar 24 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
php搜索文件程序分享
Oct 30 PHP
php文件系统处理方法小结
May 23 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
php语法检查的方法总结
Jan 21 PHP
php-fpm中max_children的配置
Mar 15 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数据库类
2009/05/27 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
在微信小程序中保存网络图片
2019/02/12 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
Python线程创建和终止实例代码
2018/01/20 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
Python中有几个关键字
2020/06/04 Python
怎么快速自学python
2020/06/22 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
护理学毕业生自荐信
2013/10/02 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
毕业设计论文评语
2014/12/31 职场文书
高考学习决心书
2015/02/04 职场文书
小学学习委员竞选稿
2015/11/20 职场文书