【PHP】elseif文(条件分岐) – 複数の条件で処理を分岐する

条件分岐が複数ある場合はelseif文を使います。
elseif文を使うことで必要な数だけ条件で分岐することができるようになります。

ここではelseif文について解説します。

なお、elseif文はif文と合わせて使うため、if文をご存知でない方は先に次の記事をご覧ください。

elseif文とは

elseif文はif文と同様に条件によって処理を分岐する仕組みです。
if文と合わせて使い、if文の条件が真でないときにelseif文の処理が実行されます。

そして、elseif文はif文と異なり、複数記述することが可能なので、必要な数だけ分岐を追加できます。

基本構文

elseif文はif文と合わせて使い、基本構文は次のようになります。

if( 条件式1 ) {
    // 条件式1が真(true)の場合に実行する処理
} else if( 条件式2 ) {
    // 条件式2が真(true)の場合に実行する処理
} else if( 条件式3 ) {
    // 条件式3が真(true)の場合に実行する処理
} 

elseif文はif文の波括弧{}に続けて記述します。
3個、4個と複数分岐を追加したい場合はelseif文の波括弧{}に続けて記述します。

elseif文はif文の条件式から順番に条件式を判定し、真になった分岐の処理のみ実行します。

サンプルコード

時間に合わせたあいさつを出力するサンプルコードをご覧ください。

ソースコード

<?php

// 時間
$hour = 15;

// 時間別のあいさつを出力
if( $hour < 6 ) {
    echo "早起きですね\n";
} else if( $hour < 11 ) {
    echo "おはようございます\n";
} else if( $hour < 17 ) {
    echo "こんにちは\n";
} else if( $hour <= 24 ) {
    echo "こんばんは\n";
}

?>

実行結果

こんにちは

時間を記憶する$hourの値によって4つ分岐処理を記述しています。
if文の条件式から順番に判定していき、処理の流れは次のようになります。

  1. if文の条件式を判定
  2. if文の条件式がfalseのため、elseif文(1個目)の条件式を判定
  3. elseif文(1個目)の条件式がfalseのため、elseif文(2個目)の条件式を判定
  4. elseif文(2個目)の条件式がtrueになるため、波括弧内の処理を実行
  5. elseif文(2個目)が実行されたのでelseif文(3個目)はスキップ
  6. if文-elseif文を終了する

このようにelseif文を使うと複数分岐することができ、いずれかのif文またはelseif文の処理を1つだけ実行できます。

演習問題

問題1

解答例

お店のお会計で割引を適用するプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 合計金額は『単価×個数』で計算する
  • 単価は150円とする
  • 個数はコマンドライン引数で与える
  • 割引の条件
    10%OFF : 個数が5個以上
    20%OFF : 個数が10個以上

実行例1

コマンドライン

php practice.php 8 

実行結果

割引金額         : 120円
合計金額(割引前) : 1200円
合計金額(割引後) : 1080円

実行例2

コマンドライン

php practice.php 12

実行結果

割引金額         : 360円
合計金額(割引前) : 1800円
合計金額(割引後) : 1440円

問題2

解答例

お店のお会計で割引を適用するプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 合計金額は『単価×個数』で計算する
  • 単価と個数はコマンドライン引数で与える(単価、個数の順)
  • 割引の条件
    15%OFF : 合計金額が10,000円以上
    10%OFF : 合計金額が5,000円以上または個数が10個以上
    5%OFF : 個数が5個以上

実行例1

コマンドライン

php practice.php 1000 11

実行結果

割引率           : 15%
割引金額         : 1650円
合計金額(割引前) : 11000円
合計金額(割引後) : 9350円

実行例2

コマンドライン

php practice.php 100 7

実行結果

割引率           : 5%
割引金額         : 35円
合計金額(割引前) : 700円
合計金額(割引後) : 665円

まとめ

elseif文は複数条件で分岐できます。
分岐が複数個あるプログラムは良くあるので、覚えておきましょう。