【PHP】PHPの「??」(Null 合体演算子)の挙動に関するメモ

PHP logo
bladeファイルで見掛けてあれこれどういう評価するんだっけとなったので






マニュアルから引用

<?php
// Null 合体演算子の使用例
$action = $_POST['action'] ?? 'default';

// 上の文は、この if/else 文と同じ意味です
if (isset($_POST['action'])) {
 $action = $_POST['action'];
} else {
 $action = 'default';
}
?>

式 (expr1) ?? (expr2) は、 expr1 が null である場合は expr2 と評価され、それ以外の場合は expr1 と評価されます。
この演算子は、左側の値が存在しない場合でも notice や warning が発生しません。 isset() と同じ挙動です。 これは、配列のキーを扱う場合に便利です



つまりこういうこと

以下のように書かれているとき、


echo ($a ?? 'default');


  • $a が定義されていて NULL ではないとき → $a
  • $a が定義されていて NULL のとき → default
  • $a が定義されていないとき → default


定義済みかどうかと NULL かどうかだけを判定するので、値が false, 0 などであった場合はそのままその値を返します。なるほど。



Null 合体演算子 | PHP: 比較演算子 – Manual