empty()
変数が存在し、かつ「空」でないことを確認する場合に使用
?? (Null合体演算子)
変数がnullでない場合のデフォルト値を設定する場合に使用
使い方
$foo = null;
$bar = $foo ?? 'default';
// $bar は 'default' になる
$foo = 'value';
$bar = $foo ?? 'default';
// $bar は 'value' になる
isEmpty()
コレクションが空であるかどうかを確認する
自分のしたミス1
$var
が存在すればそのまま$var
を表示
空であればdefaultを表示したいといったような場面があったのですが、
空文字列の時Null合体演算子は$var
が存在するという判定になるらしくそのまま空文字列を表示してしまうというミスをしてしまいました。
$var = '';
$result = $var ?? 'default';
// $result は '' (空文字列) になる
解決策
Null合体演算子で省略せずに!empty()
を使う
自分のしたミス2
$collection = collect([])
上記のような空のコレクションの際
コレクションオブジェクト自体は存在するため、empty()はfalseを返し、!empty()はtrueを返します。
よって自分の思い描いた実装ではなくなってしまいました。
解決策
isEmpty()やisNotEmpty()を使う。
コレクション自体が空であるか判定するものを最初から使うことを学びました。