ITHACK
~ みんなのIT部門 ~
【PHP】else文 - 条件分岐 / if-elseifの分岐に当てはまらない場合の分岐処理

【PHP】else文 - 条件分岐 / if-elseifの分岐に当てはまらない場合の分岐処理

if文(elseif文含む)でいずれの条件分岐にも該当しない場合の処理を行うにはelse文を使います。

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

検証環境

else文

else文は“if文(elseif文を含む)でいずれの条件分岐にも該当しない場合の分岐処理を実現する構文”です。

基本構文

if( 論理値1 ) {
    // 論理値1が真(true)の場合の処理
}
else if( 論理値2 ) {
    // 論理値2が真(true)の場合の処理
}
___ih_hl_start
else {
    // if/elseifの条件分岐に該当しなかった場合の処理
}
___ih_hl_end

else文はif文・elseif文の最後に記述し、1つのif文に対して、1つのみ使用可能です。

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

また、elseif文がない場合でも使用できます。

if( 論理値1 ) {
    // 論理値1が真(true)の場合の処理
} else {
    // if/elseifの条件分岐に該当しなかった場合の処理
}

処理の流れ

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

if文またはelseif文のいずれかの分岐処理に該当した場合、その分岐処理を実行し、以降の分岐処理はスキップされます。

いずれの分岐処理にも該当しない場合は、else文の分岐処理が実行されます。

サンプル

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

14〜16行目にelse文があります。

if/elseifの条件分岐の実行可否を評価しますが、いずれの条件式もfalseになります。

そのため、else文の分岐処理が実行されます。

また、$xの値が180の場合は、2個目の分岐処理(8〜10行目)が実行されるため、else文をスキップします。

<?php

___ih_diff_start
-$x = 500;
+$x = 180;
___ih_diff_end
 
if( $x <= 100 ) {
    echo "100以下の値です。\n";
}
else if( $x <= 200 ) {
    echo "200以下の値です。\n";
}
else if( $x <= 300 ) {
    echo "300以下の値です。\n";
}
else {
    echo "300より大きい値です。\n";
}
 
echo '処理を終了します。';
 
?>
$ php sample.php
200以下の値です。
処理を終了します。

演習問題

問題1

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

  • 合計金額は『単価×個数』で計算する
  • 単価は150円とする
  • 個数はコマンドライン引数で与える
  • 割引の条件
    20%OFF 個数が10個以上
    10%OFF 個数が5個以上
    5%OFF 上記条件に当てはまらない場合
$ php practice.php 11
割引金額         : 330円
合計金額(割引前) : 1650円
合計金額(割引後) : 1320円
$ php practice.php 4
割引金額         : 30円
合計金額(割引前) : 600円
合計金額(割引後) : 570円

問題2

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

  • 合計金額は『単価×個数』で計算する
  • 単価と個数はコマンドライン引数で与える(単価、個数の順)
  • 割引の条件
    15%OFF 合計金額が10,000円以上
    10%OFF 合計金額が5,000円以上または個数が10個以上
    5%OFF 個数が5個以上
    3%OFF 上記条件に当てはまらない場合
$ php practice.php 1500 14
割引率           : 15%
割引金額         : 3150円
合計金額(割引前) : 21000円
合計金額(割引後) : 17850円
$ php practice.php 100 4
割引率           : 3%
割引金額         : 12円
合計金額(割引前) : 400円
合計金額(割引後) : 388円