🐥

条件分岐入門: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 より複雑な条件分岐
https://www.amazon.co.jp/dp/B0DV51PQ67

ほかにも FOR文・配列・条件分岐などを小ステップで練習できる教材も用意しています。
興味があればそちらも覗いてみてください。

イーエスファイン IT人材育成部の書籍
https://www.amazon.co.jp/stores/author/B0F2ML4WTH

Discussion