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

次のコードの実行結果として正しいものはどれか。 ```php $x = 10; $y = ($x > 5) ? "big" : (($x > 0) ? "small" : "zero or negative"); print $y; ```

big 正解
small
zero or negative
エラーが発生する
解説
三項演算子`条件 ? 真の場合 : 偽の場合`は、条件が`true`の時点で「真の場合」の値がそのまま返され、「偽の場合」の式(この設問ではさらにネストされた三項演算子)は評価すらされません。 この設問では`$x > 5`(`10 > 5`)が`true`のため、外側の三項演算子は`"big"`を返し、内側にネストされた`($x > 0) ? "small" : "zero or negative"`は評価されずに終わります。 例: ``` $x = 10; $y = ($x > 5) ? "big" : (($x > 0) ? "small" : "zero or negative"); print $y; // big ``` PHP8では、括弧なしで三項演算子を連続してネストする書き方は構文エラーになるため、この設問のように意図を明確にする丸括弧を必ず使う必要があります。 (参照: 独習PHP 第4版 第3章 演算子 3.3.5節 条件演算子 p.106〜109)