第3章 演算子 / 第4回 模擬試験

PHPの三項演算子・null合体演算子に関する次の記述のうち、正しいものはどれか。

null合体演算子`??`は、左辺が`null`の場合に右辺の値を返す。 正解
三項演算子`?:`は、必ず3つの異なる値を返さなければならない。
null合体演算子`??`は、PHPでは使用できない。
`??`は、左辺が`0`や空文字列の場合にも右辺の値を返す。
解説
null合体演算子`??`(`$a ?? $b`)は、左辺`$a`が未定義または`null`である場合に右辺`$b`の値を返します。`isset($a) ? $a : $b`を簡潔に書ける構文です。 他の選択肢が誤りである理由は次の通りです。 ・三項演算子`?:`(`条件 ? 真の場合 : 偽の場合`)は、条件式の結果に応じて2つの値のどちらかを返す演算子です。「必ず3つの異なる値を返す」という説明は誤りです。 ・null合体演算子`??`はPHP 7.0で導入され、PHP8でも通常に使用できます。 ・`??`が右辺を返すのは、左辺が「未定義」または「`null`」の場合に限られます。`0`や空文字列`""`は`null`ではないため、その場合は左辺の値がそのまま使われます。 例: ``` $config = ['limit' => 0]; echo $config['limit'] ?? 10; // 0(0はnullではないのでそのまま使われる) echo $config['missing'] ?? 10; // 10(未定義キーなので右辺が使われる) ``` (参照: 独習PHP 第4版 第3章 演算子 3.3.5節 条件演算子 p.106〜109)