专栏首页热爱ITPHP7 引入的“??” 和“?:”的区别

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)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用docker建主机的几个要点 原

    docker run --privileged=true --dns=192.168.1.1 --name shop-t -d -p 8080:80 -v /p...

    双面人
  • Redis list 之增删改查 转

    1、lpush [lpush key valus...]  类似于压栈操作,将元素放入头部

    双面人
  • thinkphp5日期时间查询比较和whereTime使用方法

    双面人
  • php isset()和empty()

    支持多个参数 :如果一次传入多个参数,则自左至右依次检测 ,变量都被设置(不是NULL)返回TRUE,中途遇到没有设置的变量则会停止检测并返回FALSE。

    用户7521130
  • 【每日算法Day 88】超越妹妹教你如何做这道排序题

    给定一个整数数组,编写一个函数,找出索引 m 和 n,只要将索引区间 [m, n] 的元素排好序,整个数组就是有序的。注意:n-m 尽量最小,也就是说,找出符合...

    godweiyang
  • 547. Friend Circles

    There are N students in a class. Some of them are friends, while some are not. T...

    眯眯眼的猫头鹰
  • P2746 [USACO5.3]校园网Network of Schools

    题目描述 一些学校连入一个电脑网络。那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”)。注意即使 B 在 A 学校的分发列表中, A...

    attack
  • 问答记录贴 1 | 解析 NumPy 的广播(broadcasting)机制

    实践出真知,相互讨论碰撞出思想的火花。【原创互助答疑群】内有的问答很精彩。于是脑子里闪现出一个想法,为什么不把整个的问答过程记录总结下来,分享给更多的小伙伴呢?...

    double
  • Leetcode 476. Number Complement

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn....

    Tyan
  • 【POJ 2886】Who Gets the Most Candies?

    约瑟夫问题的升级版,每次出去的是前一个出去的人位置+手上的数字(正往前,负往后)。第i个出去的人拿的糖是i的约数的个数。求拿糖最多的人和他的糖果数。

    饶文津

扫码关注云+社区

领取腾讯云代金券