本記事では、PHPでハテナマーク2つで使えるnull合体演算子の使い方について解説しています。
PHPの学習におすすめ書籍
独習PHP 第4版

メリット
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる


Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!



初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード


メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)


目次
null合体演算子とは
null合体演算子とは、値がNullであるかを判別するために使われる演算子です。
null合体演算子はPHPのバージョン7以降で使うことができ、バージョン7より前ではissetと三項演算子を組み合わせて値がNullであるかを判別していました。
<?php
$num = null;
$num = isset($num) ? $num : '1';
?>
null合体演算子の使い方
null合体演算子の使い方は以下のとおりです。
$num = null;
$num = $num ?? 1;
??の左に値がnullであるか調べたい変数などを指定し、??の右に値がnullであった場合に設定したい値を指定します。??の左に設定している値がnull以外の場合はそのまま値を返し、値がnullだった場合は??の右に設定している値を返します。
上記のコードだと変数$numにnullが代入されているので、変数$numには??の右に設定されている1が代入されます。
null合体演算子に該当するもの
冒頭でnull合体演算子は値がNullであるかどうかを判別すると解説しましたが、実は値がNullではなく未定義の場合でも??の右に設定されている値が適用されます。
下記のサンプルコードで検証してみましょう。
<?php
$str;
$str = $str ?? '値がnullだと判断されました!';
echo($str);
?>


サンプルコードの実行結果を出力してみると、??の右に設定されている「値がnullだと判断されました!」の文字列が表示されました。つまり、値が未定義の場合もnullと同様に判別されることが分かります。