PHPのNull合体演算子(”??”)の使い方(気になる7パターンを確認)

PHP

PHPのNull合体演算子の使い方と、7パターンのコードで、挙動を検証した結果を書いています。
サンプルコードはPHPのバージョン8で動かしてみています。

Null合体演算子とは?使い方は?

PHPのNull合体演算子は、Nullかどうかを判断します。
そして、nullだった場合とそうでない場合で返す値を分岐します。

例えば、下記のように使用します。

<?php
$fruits = 'apple';

echo $fruits ?? 'nullでした';

$fruits変数には’apple’という文字列が入っています。
$fruits ??と書いているところで、Null判定されます。

nullだった場合は、??の右に指定した値が返されて、そうでない場合は左の値が返されます。
上記の例の場合は、$fruitsには文字列が入っているので、appleechoで出力されます。

Null合体演算子はPHPのバージョン7以降で使えるようになりました。

バージョン7以前のPHPでは、issetと三項演算子を使用して、下記のように処理をしていました。

<?php
$fruits = 'apple';

echo isset($fruits) ? $fruits : 'nullでした';

isset関数を使用して、チェックし値がセットされていれば、左側に指定したデータを返します。

関連の参考記事は下記になります。
PHPのisset関数の使い方と挙動確認9パターン!
PHPのechoの使い方!(検証コード7パターン)

Null合体演算子を使った7パターン検証

nullのときにしか、??の右側の値が返らないはずですが一応検証してみました。

Nullの入力

nullが入力されている場合です。
下記の出力結果は「nullでした」になります。

<?php
$fruits = null;
echo $fruits ?? 'nullでした';

未定義の変数の入力

変数に値が入っていない未定義の場合です。
下記の出力結果は「nullでした」になります。

<?php
echo $fruits ?? 'nullでした';

文字列の入力

文字列を入れた場合です。
下記の出力結果は「grape」になります。

<?php
$fruits = 'grape';
echo $fruits ?? 'nullでした';

空文字の入力

空文字(”)を入れた場合です。
下記の出力結果は「''」になります。(空なので何も出力されません)

<?php
$fruits = ''; 
echo $fruits ?? 'nullでした';

0の入力

0を入れた場合です。
下記の出力結果は「0」になります。

<?php
$fruits = 0; 
echo $fruits ?? 'nullでした';

falseの入力

falseを入れた場合です。
下記の出力結果は「''」になります。

<?php
$fruits = false; 
echo $fruits ?? 'nullでした';

falseの場合でも、nullではないので、echoで出力しようとします。
falseなので、echoでは何も出力されません。

空配列の入力

空配列を入れた場合です。
配列なので、var_dumpを使用して出力を試してみました。

<?php
$fruits = []; 
var_dump($fruits ?? 'nullでした');

出力結果は、空配列が出力されて、下記のようになります。

array(0) {
}

Null合体演算子の挙動まとめ

サンプルコードで確認した結果をまとめると、下記のようになります。

入力値 Null判定
null true
$value(未定義) true
‘grape’ false
”(空文字列) false
0 false
false false
[](空配列) false

結果として、isset関数と同じように「未定義の変数」もしくは「null」の場合が、null判定されて右側の値が返るという認識で良さそうです。

コメント

タイトルとURLをコピーしました