$a = $a ? $a : 1;//第一種 $a = $a ? : 1;//第二種
第二種寫法從 PHP 5.3 引入,表示若 $a 返回值為真時,取 $a 的返回值。 此外,在 PHP7 中引入了??運算符
$a = $a ?? 1;
該表達式與第二種寫法類似,可以達到相同的效果。但??運算符是以判斷 $a 變量是否存在於上下文環境中作為條件,而三元運算符不具備這種判斷。所以??運算符可 用於判斷 $a 變量不存在的情況(也可用於數組)相當於isset(),而使用三元運算符判斷一個未定義的變量,PHP 會拋出異常。也正是因為這樣,用??判斷一個賦值為 0 的變量的時候結果是不一樣的。
$a=0; $c=1; $b=$a??$c; // isset ($a) ? $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