Codeworks Notes

 2020-04-27

 2023-10-23

PHP
PHP基礎
プログラミング

条件分岐 [ if ]

if 文とは条件によって処理を分岐させるための構文です。
プログラミングの中では最も基本的な処理にあたります。

条件分岐とは

たとえば 1 杯 400 円のコーヒーを飲みたいのに手持ちの小銭が足りなかったらコーヒー屋さんに行かないけど、400 円以上あったらコーヒー屋さんに行くでしょう。

これを整理すると

  • 所持金が 400 円以上ならコーヒー屋に行く
  • 所持金が 400 円未満ならコーヒー屋に行かない

これが条件分岐です。
処理が枝分かれする表現は if 文で記述することができます。

if 文の書式

// 記述例 1
if ( 条件式 ) {
  // 処理内容 ;
}

// 記述例 2
if ( 条件式 ):
  // 処理内容 ;
endif;

if の引数に条件式が入り、その後ろに処理内容が続きます。処理内容は中カッコ「 { } 」で囲んでもコロン「 : 」で区切っても、どちらでもかまいません。
この書き方の場合、条件に合った場合は処理内容が実行されますが、条件に合わないときは何も実行されないことになります。

if 〜 else 文

「 もし 〜 なら○○、そうでないなら△△ 」のそうでない方で処理をさせたい場合には else を使います。

記述例

// 記述例 1
if ( 条件式 ) {
  // 処理内容 A ;
} else {
  // 処理内容 B ;
}

// 記述例 2
if ( 条件式 ):
  // 処理内容 A ;
else:
  // 処理内容 B ;
endif;

先ほどのコーヒーの話を if 文に当てはめるとこのようになります。

$money = 500
if ( $money >= 400 ) {
  echo "コーヒー屋さんに行く";
} else {
  echo "コーヒー屋さんに行かない";
}

出力結果

コーヒー屋さんに行く

条件を追加する「 elseif 」

if 〜 else 文では 2 通りの結果に対しての処理が行えました。そこに加えて処理が 3 通り以上の場合は elseif を使って条件を追加します。

記述例

// 記述例 1
if ( 条件式 a ) {
  // 処理内容 A ;
} elseif ( 条件式 b ) {
  // 処理内容 B ;
} else {
  // 処理内容 C ;
}

// 記述例 2
if ( 条件式 ):
  // 処理内容 A ;
elseif ( 条件式 b ):
  // 処理内容 B ;
else:
  // 処理内容 C ;
endif;

コーヒー屋の話に条件を追加してみましょう。

  • 所持金が 400 円以上ならコーヒーを注文する
  • 所持金が 400 円未満なら何も注文しない
  • 所持金が 750 円以上ならケーキセットを注文する
  • 所持金が 1,000 円以上ならランチセットを注文する

条件と処理が 3 つ、 4 つと増えても elseif を増やしていけば成り立ちます。

$money = 800
if ( $money >= 1000 ) {
  echo "ランチセットを注文する";
} elseif ( $money >= 750 ) {
  echo "ケーキセットを注文する";
} elseif ( $money >= 400 ) {
  echo "コーヒーを注文する";
} else {
  echo "何も注文しない";

出力結果

ケーキセットを注文する

大事なことですがプログラムは上から順番に実行される性質があるので、上記コードの条件式は 1,000円 > 750円 > 400円 の順に書いています。

処理の流れとしては1,000円以上かどうかを比較し、次に750円以上かどうかを比較し、最後に400円を超えているかどうか調べて結果を返すような動作です。

もし条件式の金額を 400円 > 750円 > 1,000円 の順に書いた場合は400円持っていようが1,000円持っていようが最初の条件を満たしてしまうためケーキセットやランチセットを注文することなくコーヒーを注文して終わります。

そうならないためには以下の記述例のように金額の範囲を明示的に書いてください。

記述例

$money = 800
if ( $money >= 400 && $money < 750 ) {
  echo "コーヒーを注文する";
} elseif ( $money >= 750 && $money < 1000 ) {
  echo "ケーキセットを注文する";
} elseif ( $money >= 1000 ) {
  echo "ランチセットを注文する";
} else {
  echo "何も注文しない";

まとめ

if 文は条件に応じて処理を分岐させるためのものです。
引数には数値や文字列などを比較演算子で比較することでさまざまな条件を入れることができます。

Web ページを閲覧するときに一般ユーザーと管理者ユーザーで表示が異なる、登録ユーザーとゲストユーザーで利用できるサービスが異なる、など同じ Web サイトでも見る人でコンテンツが異なる、というのがあった場合は、if 文の処理で表示を分けている、ということになります。