三元運算 PHP

一般情況

在寫網頁時候,從資料庫抓取資料可能會得到 null空白 ,卻又不能把這樣的資料顯示在畫面,
於是通常會有一個預設值,以下範例取得的 id = 1 的user model,若名稱空白就顯示匿名

1
2
$user = User::find(1);
$user->name ?: '匿名';

假如今天遇到的是一個array但是我們並不知道,裡面的 key 是否有定義,
這時候最有可能的寫法為:

1
isset($a['key']) ? $a['key'] : '0';

簡化的寫法:

1
$a['key'] ?? '0';

?? 這寫法並不能判斷 $a['key'] 裡面的值,只要有定義就會回傳 $a['key']的值
若要判斷裡面的值,就會這樣寫:

1
$a['key'] ? $a['key'] : '0';

簡化的寫法:

1
$a['key'] ?: '0';

結論

如果你要判斷 isset 就使用 ??
如果你要判斷 value 不等於 null or '' or 0 or '0' 就使用 ?:

Contents
  1. 1. 一般情況
  2. 2. 結論
|