It returns its first operand if it exists and is not NULL; otherwise it returns its second operand.
$foo = $bar ?? 'something';
$foo = isset($bar) ? $bar : 'something';
這個用法是php7之後才有的用法。
算是早期的三元判斷式的一種追加的方式。
早期要判斷是否變數存在, 不存在給預設值。是需要利用if或是三元判斷式來處理
如:
$data = isset($data) ? $data : 'data';
//或
if(!isset($data)){
$data = 'data';
}
但7版後,可以用
$data = $data ?? 'data';
這樣的方式處理。
另外追加一個也是7版的三元判斷式的用法「?:」
早期要判斷有無值是需要
$data = $data ? $data : 'data';
7版後可以將其寫成
$data = $data ?: 'data';
「?:」與「??」看起來用法雖然相同。
但其意義並不太一樣。
一種是判斷值是否為空值有無資料。如果該值不存在,是有可能會報錯。
(如果php是嚴格模式的話)
具了解「??」的用法,就是為了要配合嚴格模式下生出來的用法。