我在 if 判斷中這樣用了 ??
$ts = 1696993871;
if ($ts??0 <= time()) { // $ts > time() 的
var_dump(111);
}
// 我預料的結果是 false,應該是不會走到 if 判斷中的, 實際列印出了 111
// 我單獨列印下面,返回的是 1696993871
var_dump($ts??0 <= time());
其實執行時, 是這樣的順序
$ts ?? ( 0 <= time() ) // $ts 有值則等於自身值,沒有取後面括號中的
我們可以這樣改下 , 或者不用這種寫法
if ( ($ts??0) <= time() ) { // 加括號,改變運算的優先順序
var_dump(111);
}
總結
看來,使用語法糖時,還是要慎重一些。
本作品採用《CC 協議》,轉載必須註明作者和本文連結