PHPのNull合体演算子の使い方と、7パターンのコードで、挙動を検証した結果を書いています。
サンプルコードはPHPのバージョン8で動かしてみています。
Null合体演算子とは?使い方は?
PHPのNull合体演算子は、Nullかどうかを判断します。
そして、null
だった場合とそうでない場合で返す値を分岐します。
例えば、下記のように使用します。
<?php
$fruits = 'apple';
echo $fruits ?? 'nullでした';
$fruits
変数には’apple’という文字列が入っています。
$fruits ??
と書いているところで、Null判定されます。
null
だった場合は、??
の右に指定した値が返されて、そうでない場合は左の値が返されます。
上記の例の場合は、$fruits
には文字列が入っているので、apple
がecho
で出力されます。
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
判定されて右側の値が返るという認識で良さそうです。
コメント