Null合体演算子を使いたい!

2021年5月15日

テクノロジー

eyecatch Nullの伝道師、弓削田です。 PHP7から実装されたNull合体演算子(Null coalescing operator)。 Perlでは「Defined or 演算子」と呼ばれるらしいですが、意味は同じです。 年々プログラムの書き方が変わるのは必然だということを最近身にしみてきているのですが、 変数代入をより効率的に、短い書き方で、見た目にも分かりやすくというのは、 プログラマー全員の希望でもあるので、PHPにおけるNull合体演算子の機能追加は、個人的にwelcomeです。

そもそもNull合体演算子って難しいけど何?

知らない人には、「なんじゃそりゃ」の世界なのですが、まずは「if文」からの「三項演算子」を理解しましょう。 とある関数内で、特定の変数に何が入っているか分からない状態で、別の器に移したい時、 特定の変数内がnullであれば、別の固定値を入れたい場合、通常は、if文で以下の様に書きます。 function hoge($a){ if($a != null){ $b = $a; } else{ $b = “hogehoge”; } return $b; } 変数を受け渡す時のデフォルト条件になるのですが、これを三項演算子では、以下のように書きます。 function hoge($a){ return ($a != null) ? $a : “hogehoge”; } なんと1行で書けてしまいます。

三項演算子ってなんぞや?

三項演算子を知らない人の為に説明しておくと、以下のような構文になっています。 %条件文% ? %条件文が真の時の返り値% : %条件文が偽の時の返り値%; これを、NUll合体演算子では、以下のように書く事ができます。 function hoge($a){ return $a ?? “hogehoge”; }
%変数の指定(何か値が入っている場合はこれ)% ?? %$aがnull , blank , undefinedなどの場合に代わりに入れる値% ;
こういう構文ですね。三項演算子が、条件文に対する返り値分岐に対して、Null合体演算子は、値のnullに対して反応する記述方式なんですね。 使い慣れれば、短くてスマートなプログラム構築が可能になります。

注意点

そしてくれぐれも注意しなければいけないのは、PHP7からの記述方式なので、下位互換性が求められる環境では使用できません。 下位互換が怖い方は、三項演算子での記述が確実でしょう。 さあ、あなたは、この記述方式、使いますか?使いませんか? ちなみに、他の言語でも類似の記述方法があるので、Wikipediaを参考にして、言語対応してみてはいかがでしょうか? Null合体演算子 | Wikipedia

おまけ

二項演算子というのもあって、次のように書く事ができます。 $res = A ? A : B; ↓ $res = A ?: B; さらに、Null合体演算子は、Javascriptでも使えますが、意外とまだあるブラウザで使えないものもあるんですよね。 個人的には。使うの躊躇してます。 参考リンク : MDN

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。