技术文章
当前位置:首页 > PHP编程文章 > PHP7引入的"??"和"?:"的区别

PHP7引入的"??"和"?:"的区别详解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:154

这篇文章主要知识点是关于php、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP7内核剖析
PHP7内核剖析原书影印版
  • 类型:PHP7大小:5.6 MB格式:PDF出版:电子工业出版社作者:秦朋
立即下载

更多PHP相关的学习资源可以参阅 PHP电子书程序设计电子书 等栏目。

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)

结论

  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调用快递鸟接口实例分、 PHP7引入的"??"和"?:"的、 thinkPHP5.0框架验证码及点击、 等php文章进一步学习,感谢大家的阅读和支持。

上一篇:ThinkPHP框架整合微信支付Native扫码支付实现方法

下一篇:ThinkPHP3.2.3框架执行原生SQL语句的方法代码实例

展开 +

收起 -

相关电子书
学习笔记
网友NO.426828

升级 PHP7.1 后 openssl 解密 mcrypt AES 数据不兼容问题的处理方法

这是一个创建于 374 天前的主题,其中的信息可能已经有所发展或是发生改变。 $key = "01234567891234560123456789123456";$iv = "0123456789123456";//原本的 mcrypt 加密$en_data = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, "0123456789123456", MCRYPT_MODE_CBC, $iv));var_dump("mcrypt_encrypt:");var_dump(bin2hex(base64_decode($en_data)));var_dump($en_data);$de_data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($en_data), MCRYPT_MODE_CBC, $iv);var_dump("mcrypt_decrypt:");var_dump($de_data);//OpenSSL 加密$en_data = base64_encode(openssl_encrypt("0123456789123456", "aes-128-cbc", $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv));var_dump("openssl_encrypt:");var_dump(bin2hex(base64_decode($en_data)));var_dump($en_data);$de_data = openssl_decrypt(base64_decode($en_data), "aes-128-cbc", $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);var_dump("openssl_decrypt:");var_dump($de_data);var_dump(openssl_error_string()); 输出 string 'mcrypt_e……

网友NO.344625

PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】

本文实例讲述了PHP7使用ODBC连接SQL Server2008 R2数据库。分享给大家供大家参考,具体如下: 我用的是:WampServer集成工具,PHP版本为7.0.29,数据库为SQL Server 2008 R2; 注意:在连接数据库时,需要进入 X:\wamp\bin\apache\apache2.4.33\bin 目录下的PHP配置文件:PHP.ini。进入里面修改相关配置。配置如下: extension=php_odbc.dll 把前面冒号去掉开启服务 并且 重启下WampServer 所有服务。(重启Apache也行) 我是利用thinkPHP5.1框架来配置的。 在控制器中创建一个Test.class.php 代码如下: use think\Controller;class Test extends Controller{ public function zz(){ $servername='DRIVER={SQL Server};SERVER=localhost;DATABASE=mysql'; $username = 'sa'; $password = '123456'; $conn = odbc_connect($servername,$username,$password); $sql = "SELECT * FROM myLLP"; $exec=odbc_exec($conn,$sql); while($row =odbc_fetch_array($exec)){ $List[]=$row; } echo json_encode($List); exit; }} 其中数……

网友NO.817566

实例分析PHP7的异常

PHP 7 异常 用于向下兼容及增强旧的assert()函数。它能在生产环境中实现零成本的断言,并且提供抛出自定义异常及错误的能力。 老版本的API出于兼容目的将继续被维护,assert()现在是一个语言结构,它允许第一个参数是一个表达式,而不仅仅是一个待计算的 string或一个待测试的boolean。 assert() 配置 配置项 默认值 可选值 zend.assertions 1 1 - 生成和执行代码 (开发模式) 0 - 生成代码,但在执行时跳过它 -1 - 不生成代码 (生产环境) assert.exception 0 1 - 断言失败时抛出,可以抛出异常对象,如果没有提供异常,则抛出 AssertionError 对象实例。 0 - 使用或生成 Throwable, 仅仅是基于对象生成的警告而不是抛出对象(与 PHP 5 兼容) 参数 assertion 断言。在 PHP 5 中,是一个用于执行的字符串或者用于测试的布尔值。在 PHP 7 中,可以是一个返回任何值的表达式, 它将被执行结果……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

电子书资源由网友、会员提供上传,本站记录提供者的基本信息及资源来路

鸣谢: “ 码小辫 ” 公众号提供回调API服务、“ 脚本CDN ”提供网站加速(本站寻求更多赞助支持)

版权投诉 / 书籍推广 / 赞助:520161757@qq.com

上传资源(网友、会员均可提供)

查看最新会员资料及资源信息