还看了同事写的代码两个问号的三元运算符以为她写错了,百度查了一下才发现PHP7的
$paramArr['pageno'] = $this->request->param('pageno') ?? '1'; //isset($a)?$a:$c
以下文章来自转载的一篇原文
$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
转自:
https://www.cnblogs.com/cshaptx4869/p/11363302.html