遠き君へ

〜インターネットの最果てで自分語りを垂れ流したり垂れ流さなかったりするブログ〜

【PHP】null合体演算子がいい感じにしてくれるのはnullだけじゃなくて未定義も

http://php.net/manual/ja/migration70.new-features.php#migration70.new-features.null-coalesce-op の「Null 合体演算子」の項に書いてある通りっちゃそうなんですが、
「null合体演算子」という名前からだとnullの場合にデフォルト値に変えるのに使える印象ですが、
未定義:変数が定義されていなかったり、配列のキーが存在しなかったりする場合にも使えます。

// $hogeはここまでで出てきていない
echo $hoge ?? 'empty' . PHP_EOL;
// -> empty
echo $hoge['fuga'] ?? 'empty' . PHP_EOL;
// -> empty

つまり以下の2つのコードは等価ではないってことですね。

$fuga = $hoge;

$fuga = $hoge ?? null;

最初、「null合体演算子の2項目をnullにしたら」意味なくない?って思っちゃいました。

便利ですね。でもさらに欲が出て$hoge ??= 'empty';(+=的な感じ)みたいにも書けるようになって欲しくなってきた……

background image is created by Niellyn & bhsav.