概要
if だけだと「条件が真のときの処理」しか書けない。だが現実のロジックの多くは 二者択一 だ。合格か不合格か、有効か無効か、奇数か偶数か、ログイン済みか未ログインか — 「条件を満たさなかったときも別の処理をしたい」場面が圧倒的に多い。これを表現するのが if / else で、else ブロックは「if の条件が偽だったときに必ず通る道」になる。
3 つ以上の分岐が必要になったら elseif を使う。if ... elseif ... elseif ... else は 上から順に条件を判定し、最初に真になった節だけ を実行する。たとえば点数で A / B / C / D を判定するときは、上から >= 90 >= 80 >= 70 と書いていけば、>= 90 に当てはまった瞬間に下の節は見にいかない。この「上から評価して止まる」性質を理解すると、条件の書く順番が大事だと分かる (>= 70 を一番上に書いてしまうと、満点でも C 判定になってしまう)。
ネストした if を何重にも書くより、elseif で横並びにする方が 読みやすく・バグも減る ので、3 分岐以上はまず elseif を検討するのが基本。さらに分岐数が多くて値の等価比較なら、後で扱う ch05-switch や PHP 8 の match 式の出番だ。この章では if / else の基本形と elseif を体に入れる。
学習目標
if / elseで 2 分岐できるelseifで 3 分岐以上に分けられる- 上から順に条件を判定すると理解する
ドリル
| no | 内容 |
|---|---|
| 01 | 入力された整数が偶数か奇数かを出力 |
| 02 | 60 以上なら合格、それ以外なら不合格 |
| 03 | 点数で A / B / C / D を判定 |
📝 演習: ドリル 01 — 偶数か奇数か
問題
標準入力で整数を 1 つ受け取り、偶数 なら 偶数、奇数 なら 奇数 と出力してください。
入力例:
7
期待される出力:
奇数ヒント
$n = (int) trim(fgets(STDIN));で読む$n % 2 == 0なら偶数if / elseを使う
📝 演習: ドリル 02 — 合格か不合格か
問題
標準入力で点数 (0〜100 の整数) を 1 つ受け取り、60 以上 なら 合格、60 未満 なら 不合格 と出力してください。
入力例:
55
期待される出力:
不合格ヒント
$score = (int) trim(fgets(STDIN));if / elseで 2 分岐- 「以上」は
>=
📝 演習: ドリル 03 — 点数で評価を判定
問題
標準入力で点数 (0〜100 の整数) を 1 つ受け取り、以下のルールで評価を出力してください。
| 点数 | 評価 |
|---|---|
| 90 以上 | A |
| 80 以上 90 未満 | B |
| 70 以上 80 未満 | C |
| それ以外 (70 未満) | D |
入力例:
85
期待される出力:
Bヒント
$score = (int) trim(fgets(STDIN));if / elseif / elseif / elseで 4 分岐- 条件は 上から厳しい順 に並べる (まず
>= 90を判定)