PHP7 引入的“??” 和“?:”的区别
<?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)
结论
$a ?? 0 等同于 isset($a) ? $a : 0。
$a ?: 0 等同于 $a ? $a : 0。
empty: 判断一个变量是否为空(null、false、00、0、’0′、』这类,都会返回true)。
isset: 判断一个变量是否设置(值为false、00、0、’0′、』这类,也会返回true)。
PHP7 引入的“??” 和“?:”的区别的更多相关文章
- 关于CSS各种选择器,还有各种引入样式表的区别,import导入样式表,在介绍一些伪类选择器
(一)CSS选择器: 1.标签选择器:通过HTML的标签名直接选择该标签 2.类选择器:通过.选择器的名称{} 来对添加了class属性的标签进行选中 3.ID选择器:通过#选择器的名称{} 来对添加 ...
- PHP7三元运算符 ?? 和 ?: 的区别
1. (expr1) ?? (expr2) 是 PHP7才有的功能,等同于: isset(expr1) ? expr1 : expr2 ; 2.(expr1) ?: (expr2) 是PHP5.3才 ...
- CSS文件引入link和@import 区别
1.(本质区别)link 属于 HTML 标签,而 @import 完全是 css 提供的一种导入 css 文件的规则. 2.文件加载时机有差别: 当一个页面被加载的时候,link 引用的 css 会 ...
- tomcat7与tomcat6引入标签taglib的区别:taglib definition not consistent with specification version
org.apache.tomcat.util.digester.Digester startElement严重: Begin event threw exceptionjava.lang.Illega ...
- PHP7 break和continue的区别
break:结束当前 for,foreach,while,do-while 或者 switch 结构的执行. continue:在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次 ...
- 什么是PHP7中的孤儿进程与僵尸进程
什么是PHP7中的孤儿进程与僵尸进程 基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法 ...
- (转)webpack和webpack-simple区别(如何引入css文件)
博主最近研究vue+webpack的时候想引入css文件死活引入不出来,在webpack-simple那里却能引得出来,十分的纳闷,然后细心的调试了一下,原来这webpack和webpack-simp ...
- PHP7的新功能
[转自:http://www.yiibai.com/php7/ ] [PHP7标量类型声明] 在PHP7,一个新的功能,标量类型声明已被引入.标量类型声明有两种选择方式 - 强制方式- 强制性是默 ...
- PHP7类型约束
在PHP7之前,函数和类方法不需要声明变量类型,任何数据都可以被传递和返回,导致几乎大部分的调用操作都要判断返回的数据类型是否合格. 为了解决这个问题,PHP7引入了类型声明. 目前有两类变量可以声明 ...
随机推荐
- Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机
Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.虚拟主机实现方案 1>.Apache httpd 有三种实现虚 ...
- Git for Windows安装教程
1.国内直接从官网(http://git-scm.com/download/win)下载比较困难,速度极慢,需要翻墙. 这里提供一个国内的下载站,方便网友下载(https://npm.taobao.o ...
- 图论 - PAT甲级 1003 Emergency C++
PAT甲级 1003 Emergency C++ As an emergency rescue team leader of a city, you are given a special map o ...
- the_permalink()和get_permalink()的区别
wordpress中the_permalink()是用于posts loop循环中(判断是否有文章,如果有文章则展示出来:如果没有文章就显示没有文章),常用于文章分类列表和文章页的模板中,用法如下 & ...
- signed Unsigned Compare
// signUnsignCompare.cpp : Defines the entry point for the console application. // #include "st ...
- MapReduce的核心运行机制
MapReduce的核心运行机制概述: 一个完整的 MapReduce 程序在分布式运行时有两类实例进程: 1.MRAppMaster:负责整个程序的过程调度及状态协调 2.Yarnchild:负责 ...
- uiwebview 离线缓存 图片
uiwebview 离线缓存图片
- 第8章 动态SQL
8.1动态SQL中的元素 8.2<if>元素 举例,在映射文件中: <select id="findCustomerByNameAndJobs" paramete ...
- ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-02291: 违反完整约束条件 (SSM.SYS_C0011830) - 未找到父项关键字
在向Oracle数据库里面插入数据时发生了以下错误 ; ]; ORA-: 违反完整约束条件 (SSM.SYS_C0011830) - 未找到父项关键字 ; nested exception : 违反完 ...
- Numpy | 04 数组属性
NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推. 在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions).比如说,二 ...