PHPにはいろんな演算子がありますよね。
例えば文字列結合の「.=」や三項演算子「?」などなど
今回は自分も最近知った、Null合体演算子、エルビス演算子を紹介したいと思います。
Null合体演算子「??」
PHP7から導入されました。
この演算子は未定義変数初期化に大いに役立ちます。
例えば下記コードのようにissetメソッド用いて変数を初期化したいことは多々あると思います
<?php
if (isset($hoge)) {
$output = $hoge;
} else {
$output = 'not_hoge';
}
echo $output; //not_hoge
ここで上記のコードをNull合体演算子を使って表現してみます。
<?php
$output = $hoge ?? 'not_hoge';
echo $output; //not_hoge
このように初期化をNull合体演算子を使うと、
余計なif,elseを使わずに表現できます!
ちなみに名前に騙されそうですが、is_nullではなく、issetで判定してるみたいです。
エルビス演算子「?:」
これはPHP5.3から導入されている演算子です。
こちらも変数初期化のときに役に立ちます。
<?php
$hoge = 'hoge'; //この行を消すと「Notice: Undefined variable: hoge」
if ($hoge) {
$output = $hoge;
} else {
$output = 'not_hoge';
}
echo $output; // hoge
上記のように変数で判定している場合がありますね。
これをエルビス演算子を使って再現すると下記のようになります。
<?php
$hoge = 'hoge'; // この行を消すと上記と同様に「Notice: Undefined variable: hoge」
$output = $hoge ?: 'not_hoge';
echo $output; // hoge
Null合体演算子のissetなし版という感じですね。
この演算子の注意点は、未定義判定は行わないことです。
初期化してない変数に使用するとNotice出てきます
ちなみにこの演算子の名前の由来はエルビス・プレスリーらしいです。(下記にリンクあります)