php ??(クエスチョンマーク2個)演算子の使い方

  • 作成日 2020.05.10
  • 更新日 2022.04.12
  • php
php ??(クエスチョンマーク2個)演算子の使い方

phpでクエスチョンマーク(??)を2個利用した「Null合体演算子」の使い方をサンプルコード使って記述してます。

環境

  • OS windows10 pro 64bit
  • PHP 7.4.5

※windows10に PHP のインストールはこちら

Null合体演算子 使い方

クエスチョンマーク(??)を2つを使ったNull合体演算子を、実際にコードを記述して実行してみます。

<?php

$test_1 = NULL;
$msg_1 = $test_1 ?? 'val';

// 中身を確認
echo "msg_1の値は:".$msg_1;


$test_2 = 'hello world';
$msg_2 = $test_2 ?? 'val';

// 中身を確認
echo "<br>";
echo "msg_2の値は:".$msg_2;

?>

実行結果は下記となり、nullの判定をissetを使用せずにコードを書くことが可能になります。

次にNull合体演算子の少し便利な使い方を記述します。
下記のコードのように値がなければ、次の値を確認するといったような使い方も可能となります。

<?php

$a = [0=>'c#',1=>'php',4=>'java'];
$b = [2=>'python',6=>'ruby'];
$c = [3=>'react', 5=>'vue'];

$mix = [];
for ($i=0; $i<=6; $i++) {
    $mix[$i] = $a[$i] ?? $b[$i] ?? $c[$i];
}
echo('<pre>');
var_dump($mix);
cho('</pre>');

?>

実行結果は下記となり、$aになければ $b $bになければ$cといった具合に値が代入されます。

このように Null合体演算子を使えば、下記のようなif文を使用しなくて済むようになります。

if (isset($test_1)) {
    $msg_1 = $test_1;
} else {
    $msg_1 = 'val';
}

また上記、if文をクエスチョンマークを2つ使った「Null合体演算子」を使うと
初めに記述したコードのように、下記となります。

$msg_1 = $test_1 ?? 'val';