php三元运算符与 $a=$a ?? 1;

php三元运算符与 $a=$a ?? 1;

$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

说白了$a ?? 1 其实有点像 isset($a) ? $a : 1

php三元运算符与 $a=$a ?? 1;

喜欢(0)

评论 抢沙发

表情