採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

三項演算子

テクノロジ系 / conditional (if / else / switch / 三項)

三項演算子

Lesson 2 / Chapter 6

if/else を 1 行で書きたい

「条件で 値を 2 択 から選ぶ」だけのとき、if/else だと冗長:

<?php
if ($n >= 60) {
    $result = "合格";
} else {
    $result = "不合格";
}
echo $result . "\n";

これを 1 行 で書けるのが 三項演算子

(条件) ? 真の値 : 偽の値

<?php
$result = ($n >= 60) ? "合格" : "不合格";
echo $result . "\n";
  • ? の前 = 条件式
  • ? の後 = 真のときの値
  • : の後 = 偽のときの値
  • 全体が 1 つの値 になる → 変数に代入できる

if/else と同じ動きをコンパクトに書ける。

echo の中に直接書ける

<?php
echo (($n >= 60) ? "合格" : "不合格") . "\n";
  • 三項演算子の結果は なので、echo や文字列連結にそのまま使える
  • 全体を ( ) で囲むと演算順序が明確になる

ネストはしない

<?php
// 動くが読みにくい (非推奨)
$s = ($n >= 80) ? "A" : (($n >= 60) ? "B" : "C");
  • 三項演算子の中に三項演算子を入れると 一瞬で読めなくなる
  • ネストしたくなったら 素直に if/elseif/else を使う
  • 三項演算子は「2 択 を 1 行で」のときだけ

使いどころのまとめ

シーン使うべき
値を 2 択から選ぶだけ三項演算子
条件で複数の処理を実行するif/else
3 つ以上の分岐if/elseif or switch

短く書ける = 偉い」ではない。

読みやすさ を優先する。

このチャプターでできるようになること

(条件) ? A : B で値を 2 択で選べる

✅ 三項演算子の結果を変数代入・echo に使える

✅ ネストせず、適切な場面で使い分けられる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — 点数で合格/不合格

問題

標準入力で整数 (点数) を 1 行受け取り、

60 点以上 なら 合格、それ未満なら 不合格 を出力してください。

判定には 三項演算子 ?: を必ず使うこと (if/else は使わない)。

入力例:

75

期待される出力:

合格

採点

php scripts/grade.php topics/conditional/ch06-ternary/drill/01-pass-or-fail/

ヒント

  • $n = (int) trim(fgets(STDIN)); で整数として読む
  • $result = ($n >= 60) ? "合格" : "不合格";
  • echo $result . "\n";