【PHP】else if文 - 条件分岐 / 複数条件による処理の分岐

【PHP】else if文 - 条件分岐 / 複数条件による処理の分岐

if文で複数の条件分岐を行うにはelseif文を使います。

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

検証環境

elseif文

elseif文は“if文の複数条件分岐を実現する構文”です。

任意の数だけelseif文で条件分岐を作ることができます。

基本構文

if( 論理値1 ) {
    // 論理値1が真(true)の場合の処理
}
___ih_hl_start
else if( 論理値2 ) {
    // 論理値2が真(true)の場合の処理
}
___ih_hl_end

elseif文はif文に続けて記述します。

elseif文と直前の波括弧の間にはスペースや改行、コメントを含むことができます。

また、1つのif文に複数のelseif文の使用が可能で、2個目以降も1個目と同様に波括弧に続けて記述します。

if( 論理値1 ) {
    // 論理値1が真(true)の場合の処理
} else if( 論理値2 ) {
    // 論理値2が真(true)の場合の処理
} else if( 論理値3 ) {
    // 論理値3が真(true)の場合の処理
} else if( 論理値4 ) {
    // 論理値4が真(true)の場合の処理
}

処理の流れ

if文(elseif構文含む)は順番に分岐処理の実行可否を評価します。

論理値がtrueである条件分岐があった場合、その分岐の波括弧内の処理のみを実行し、以降の条件分岐はスキップされます。

そのため、if文が実行できる分岐処理は1つのみになります。

サンプル

<?php
 
$x = 180;
 
if( $x <= 100 ) {
    echo "100以下の値です。\n";
}
___ih_hl_start
else if( $x <= 200 ) {
    echo "200以下の値です。\n";
}
else if( $x <= 300 ) {
    echo "300以下の値です。\n";
}
___ih_hl_end
 
echo '処理を終了します。';
 
?>
$ php sample.php
200以下の値です。
処理を終了します。

8〜13行目に2つのelseif文による条件分岐があります。

処理の流れは、初めに5行目のif文の実行可否を評価します。

$x <= 100falseのため、次のelse文の実行可否を評価します。

$x <= 200trueのため、その波括弧内の処理が実行されます。

最後のelseif文の$x <= 300trueですが、if文(elseif文を含む)によって実行する分岐処理は1つのため、スキップされます。

つまり、先に定義した条件分岐から優先的に評価・実行するということです。

また、いずれの分岐処理にも該当しない場合、全ての分岐処理をスキップします。

<?php

___ih_diff_start
-$x = 180;
+$x = 500;
___ih_diff_end
 
if( $x <= 100 ) {
    echo "100以下の値です。\n";
}
else if( $x <= 200 ) {
    echo "200以下の値です。\n";
}
else if( $x <= 300 ) {
    echo "300以下の値です。\n";
}

 
echo '処理を終了します。';
 
?>
$ php sample.php
処理を終了します。

演習問題

問題1

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

  • 合計金額は『単価×個数』で計算する
  • 単価は150円とする
  • 個数はコマンドライン引数で与える
  • 割引の条件
    10%OFF : 個数が5個以上
    20%OFF : 個数が10個以上
$ php practice.php 8 
割引金額         : 120円
合計金額(割引前) : 1200円
合計金額(割引後) : 1080円
$ php practice.php 12
割引金額         : 360円
合計金額(割引前) : 1800円
合計金額(割引後) : 1440円

問題2

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

  • 合計金額は『単価×個数』で計算する
  • 単価と個数はコマンドライン引数で与える(単価、個数の順)
  • 割引の条件
    15%OFF : 合計金額が10,000円以上
    10%OFF : 合計金額が5,000円以上または個数が10個以上
    5%OFF : 個数が5個以上
$ php practice.php 1000 11
割引率           : 15%
割引金額         : 1650円
合計金額(割引前) : 11000円
合計金額(割引後) : 9350円
$ php practice.php 100 7
割引率           : 5%
割引金額         : 35円
合計金額(割引前) : 700円
合計金額(割引後) : 665円