条件分岐入門:IF と AND の基本をしっかり理解しよう [PHP入門]
プログラミングの世界では、「条件分岐」が欠かせません。
何かの条件によって処理を変える「IF 文」は、すべてのプログラムの土台です。
今回は PHP を例に、「3 つ以上の条件を扱う IF 文」と「AND(かつ)」による複数条件の指定方法をわかりやすく整理します。
IF 文の基本構造
IF 文は次のように書きます。
if (条件1) {
// 条件1を満たす場合
} else if (条件2) {
// 条件2を満たす場合
} else {
// それ以外
}
構造としては「if → else if → else」となります。
else if はいくつでも増やせます。
else は省略できます。
ポイントは、上から順に評価され、 最初に当てはまったブロックだけが実行される という点です。
たとえば次のプログラムを見てみましょう。
if ($score >= 80) {
echo "おめでとう";
} else if ($score >= 70) {
echo "もうちょっと";
} else {
echo "がんばれ!";
}
この場合 $score が 85 なら「おめでとう」が表示されます。
$score >= 80 にあてはまり 「おめでとう」 を表示しますが、else if ($score >= 70) と else はチェックされません。
もし if と else if の順序を逆にするとどうなるでしょうか?
if ($score >= 70) {
echo "もうちょっと";
} else if ($score >= 80) {
echo "おめでとう";
} else {
echo "がんばれ!";
}
この場合 $score >= 70 が先に当たって「もうちょっと」と表示されます。
条件の順番は動作結果に直結するので注意しましょう。
区分ごとの料金を決定する
IF 文を使って「区分に応じた料金」を出してみましょう。
次のようなルールです。
- 小児:200 円
- 大人:400 円
- シルバー:300 円
それぞれの区分を数値で管理します。
- 小児:1
- 大人:2
- シルバー:3
これをプログラムにすると次のようになります。
if ($price_group == 1) {
echo "200 円";
} else if ($price_group == 2) {
echo "400 円";
} else if ($price_group == 3) {
echo "300 円";
}
このように、数値や状態に応じて処理を分けるのが条件分岐の基本です。
ここまではシンプルな IF 文の積み重ねで対応できます。
「6 歳以上 12 歳未満」を判定したいとき AND
次の課題に進みましょう。
「6 歳以上 12 歳未満の場合、小児とする」という条件をコード化したいとします。
まず、ありがちなミスを見てみましょう。
if ($age >= 6) {
echo "小児です";
} else if ($age < 12) {
echo "小児です";
}
一見正しそうですが、実は すべての値で「小児です」と出力される バグがあります。
なぜなら、5 歳は「12 歳未満」に当てはまり、13 歳は「6 歳以上」に当てはまるからです。
つまり、どんな値でもどちらかに該当するのです。
AND(かつ)で条件を組み合わせる
ここで登場するのが論理演算子 AND(かつ) です。
PHP では && もしくは and で書きます。
if ($age >= 6 && $age < 12) {
echo "料金区分は小児です";
}
これで「両方の条件を満たすときだけ」実行されます。
つまり 6 歳〜11 歳のときのみ小児と判定され、5 歳や 12 歳ではスキップされます。
IF 文の中で複数の条件を組み合わせるときは、この &&(かつ)や ||(または)を活用します。
どちらも「論理演算子」と呼ばれます。
まとめ:条件分岐を制する者はプログラムを制す
本記事で学んだポイントをまとめます。
- IF 文は「if → else if → else」の順序で評価される
- 最初に当てはまった条件ブロックだけが実行される
-
- 条件が多い場合は、順序を意識すること
- 「6 歳以上かつ 12 歳未満」のような複合条件には &&(AND)を使う
プログラムが複雑になっても、考え方は同じです。
「条件を整理して、正しい順序で、正しい論理演算を使う」。
これを意識するだけで、バグの少ない安定したコードが書けるようになります。
本記事は弊社の次プログラミング教材の要約です。
PHP ファーストステップ講座 004 より複雑な条件分岐
ほかにも FOR文・配列・条件分岐などを小ステップで練習できる教材も用意しています。
興味があればそちらも覗いてみてください。
イーエスファイン IT人材育成部の書籍
Discussion