PHP7.0におけるNULL合体演算子(??)の使い方


PHP7.0におけるNULL合体演算子(??)の使い方

ずっとPHP7.0を使ってきたのに今更になって知ったことがあるので徒然なるままに書いていく。
合体演算子を見つけた時に「なんだよここ、文字化けしてるじゃねーか」と暫くスルーしていた自分にタイプリープして間違えなかった世界戦に移行するアニメを探しているのですがどなたか知りませんか?

NULL合体演算子とは?

「値が無かったら指定した値を代入する」みたいな感じ。
詳しくはこちら↓
新機能:Null 合体演算子

NULL合体演算子の使い方(実例)

演算子なので($a === true)と同じように使う。
例えば

greet.php
$a = "hello";
$b = "chao";

echo ($c ?? "こんにちは");  //「こんにちは」と出力

上では$cは定義していないので普通は(合体演算子を使わなければ)PHP Notice: Undefined variable: cのようにnoticeが吐かれてしまう。
ただ、ここでは「$cがなかったら"こんにちは"を代入する」と合体演算子が仕事してくれているので、上の様な結果になる。
(いわゆるデフォルト値を設定するってことやね。)

こんな感じで使えばよさそう

isset_no_kawari.php
$a = "hello";
$b = "chao";

if($c ?? NULL){ //$cが無かったらNULLを入れるのでelseの処理が行われる
  echo $c;
}else{
  echo "bye";
}
// bye

isset()を使わなくてもいいのはあり難い。
HTMLのFormから返ってきた$_POST$_GETを処理するのにつかえるってことやね。

詳しいことは下の参考を見てください。

関係ないけど気になっていること

・宇宙船演算子ってなんだ?
isset()の配列verって!empty()しかないの?

参考

実装例:PHPのnull合体演算子で「無かったら」の処理が簡単
https://qiita.com/akiyoshi_sasaki/items/1c402e6c4af05f8197e6

PHPマニュアル 新機能
https://www.php.net/manual/ja/migration70.new-features.php