栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP三元运算符vs空合并运算符

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP三元运算符vs空合并运算符

当您的第一个参数为null时,它们基本相同,不同之处在于,

E_NOTICE
当您有未定义的变量时,null合并不会输出。在PHP7.0迁移的文档有这样一段话:

对于需要将三元数与isset()结合使用的常见情况,已将空合并运算符(??)添加为语法糖。如果它存在且不为NULL,则返回其第一个操作数;否则返回第一个操作数。否则返回第二个操作数。

这是一些示例代码来演示这一点:

<?php$a = null;print $a ?? 'b'; // bprint "n";print $a ?: 'b'; // bprint "n";print $c ?? 'a'; // aprint "n";print $c ?: 'a'; // Notice: Undefined variable: c in /in/apAIb on line 14print "n";$b = array('a' => null);print $b['a'] ?? 'd'; // dprint "n";print $b['a'] ?: 'd'; // dprint "n";print $b['c'] ?? 'e'; // eprint "n";print $b['c'] ?: 'e'; // Notice: Undefined index: c in /in/apAIb on line 33print "n";

注意的行是我使用速记三元运算符而不是空合并运算符的行。但是,即使有此通知,PHP也会给出相同的响应。

执行代码:https :
//3v4l.org/McavC

当然,这总是假设第一个参数是

null
。一旦它不再为null,则最终会出现以下差异:
??
运算符将始终返回第一个参数,而
?:
简写方式只有在第一个参数为true时才返回,并且这取决于PHP如何将内容类型转换为布尔值。

所以:

$a = false ?? 'f'; // false$b = false ?: 'g'; // 'g'

则将

$a
等于
false
$b
等于
'g'



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号