标签分类
技术文章
当前位置:主页 > 计算机编程 > php > PHP7引入的"??"和"?:"的区别

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

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

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

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

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

实践出真知~

测试代码

输入测试:

<?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文章进一步学习,感谢大家的阅读和支持。

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

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

展开 +

收起 -

学习笔记
网友NO.768078

升级 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_encrypt:' (length=15)string '098edde21e92cbc01078469509f877de' (length=32)string 'CY7d4h6Sy8AQeEaVCfh33g==' (length=24)string 'mcrypt_decrypt:' (length=15)string '0123456789123456' (length=16)string 'openssl_encrypt:' (length=16)string '434b1b1eb39024f270672bcd16bfe7f9' (length=32)string 'Q0sbHrOQJPJwZyvNFr/n+Q==' (length=24)string 'openssl_decrypt:' (length=16)string '0123456789123456' (length=16)string 'error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length' (……

网友NO.224172

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; }} 其中数据库名字为:mysql 。 最终效果主要是显示了数据库mysql里面的表myLLP的数据,以键值对的形式在页面上显示。 通过访问url地址, 入口文件+模块 +控制器+方法 页面路径为: http://localhost:81/tp5/public/index/test/zz 页面输出为: [{"name":"LLP","password":"123","id":"1"},{"name":"BB","password":"123","id":"2"}] 更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作……

网友NO.611358

实例分析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 中,可以是一个返回任何值的表达式, 它将被执行结果用于指明断言是否成功。 description 如果 assertion 失败了,选项 description 将会包括在失败信息里。 exception 在 PHP 7 中,第二个参数可以是一个 Throwable 对象,而不是一个字符串,如果断言失败且启用了 assert.exception 该对象将被抛出。 实例 将 zend.assertions 设置为 0: ?php ini_set(zend.assertions, 0); assert(true == false); echo Hi!; ? 以上程序执行输出结果为: Hi! 将 zend.assertions 设置为 1,assert.……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明