PHPにて三項演算子をより簡単に書けるNull合体演算子について
PHPにて〇〇という変数もしくは配列に値があれば××という変数にその値を格納、無ければ別途指定した値を格納したいというよくあるケースでいつもだと三項演算子を利用していたが、さらに簡潔に書けるNull合体演算子というのがPHP7系から追加されていたのを最近知った。以下に利用方法をメモ。
利用方法
ソースコード
//三項演算子 $param = ( isset($_GET['param']) ) ? $_GET['param'] : 'no param'; //Null合体演算子 $param = $_GET['param'] ?? 'no param';
尚、Null合体演算子を連結して以下のように記述することでGET -> POST -> いずれも存在しない場合はno paramを指定するような形も可能。
$param = $_GET['param'] ?? $_POST['param'] ?? 'no param';
また、$_GETや$_POSTではなく通常の変数でも問題無く使える。
注意点
変数や配列が未定義の場合やNULLの場合は問題無いが空の場合は左辺が有効になる点に注意。
例として以下を記述したtest.phpというファイルをアップロードしたとする。
$param = $_GET['param'] ?? 'no param';
「https://test.com/test.php」でアクセスすると右辺の「no param」が有効となるが「https://test.com/test.php?param=」だと空扱いのため左辺が有効となり「$param = '';」という状況になる。
特にGET送信時にNull合体演算子を使うような場合は注意した方が良さそう。
尚、その他の気になりそうなケースはこちらの記事が参考になった。
リファレンス
https://www.php.net/manual/ja/migration70.new-features.php#migration70.new-features.null-coalesce-op
所感
「??」という演算子が慣れるまで微妙に感じそうだけど、かなり簡潔に書けるようなので今後使っていきたいところ。
ちなみにJavaScriptでもNull合体演算子があるものの、こちらは左辺が未定義変数の場合は「〇〇 」とエラーになり、PHPと同じ感覚では使えなさそうということでちょっと微妙かも。
関連記事
-
-
PHPとGoogle Authenticatorの組み合わせで2段階認証を実装する方法
2段階認証と言えばSMS送信のケースが多く、その次に通常のメール送信というケース ...
-
-
PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズ
PHPで縦横どちらかが指定の長さを超えた場合、 比率を保ったままリサイズしたかっ ...
-
-
PHPで月末日を取得
PHPファイルを触っている際に日付処理時、 date('t')というものがあって ...
-
-
画像をアップロードすると複数サムネイルを生成する方法
フォームで画像をアップロードすると、予め定めておいた大中小のサイズでサムネイル画 ...
-
-
PHPでパスワードを保存する際に暗号(パスワードハッシュ)化させ、ログイン認証時に用いる方法
PHPでログイン認証を組み込む際に今までは特に暗号化は行っていなかった。と言うの ...