三項演算子
テクノロジ系 / 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";