PHP 三元运算符

$a = $a ? $a : 1;//第一种
$a = $a ? : 1;//第二种

第二种写法从PHP 5.3引入,表示若$a返回值为真时,取$a的返回值。 此外,在PHP7中引入了 ?? 运算符

$a = $a ?? 1;

该表达式与第二种写法类似,可以达到相同的效果。但 ?? 运算符是以判断$a变量是否存在于上下文环境中作为条件,而三元运算符不具备这种判断。所以 ?? 运算符可 用于判断$a变量不存在的情况(也可用于数组),而使用三元运算符判断一个未定义的变量,PHP会抛出异常。也正是因为这样,用??判断一个赋值为0的变量的时候结果是不一样的。

$a=0;
$c=1;
$b=$a??$c;
echo 'a:'.$a.',b:'.$b.',c:'.$c;
//a:0,b:0,c:1
$a=0;
$c=1;
$b=$a?$a:$c;
echo 'a:'.$a.',b:'.$b.',c:'.$c;
//a:0,b:1,c:1
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3

看来用??要注意了

5年前 评论

准确的说同 isset

5年前 评论

@lovecn
?? 做的事情多点,$a ?? 1 的结果等同于 isset($a) ? $a : 1

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!