ITHACK
~ みんなのIT部門 ~

【PHP】else文(条件分岐) – 条件に当てはまらない場合の分岐

条件分岐にはelse文と呼ばれる仕組みがあります。
else文はif文-elseif文で、いずれの条件にも当てはまらない場合の処理を分岐する仕組みです。

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

なお、if文-elseif文については次の記事でご覧ください。

  • else文

else文とは

else文はif文-elseif文と同様に処理を分岐する仕組みです。
if文-elseif文と合わせて使い、if文-elseif文の条件が全て偽の時に実行されます。

また、else文は1つのif文-elseif文に対して1つのみ記述できます。

基本構文

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

if( 条件式1 ) {
    // 条件式1が真(true)の場合に実行する処理
} else if( 条件式2 ) {
    // 条件式2が真(true)の場合に実行する処理
} else {
    // 上記、条件式に当てはまらない時
}

if文またはelseif文の波括弧{}に続けて記述します。

また、elseif文はなくても、if文-else文だけで記述することができます。

サンプルコード

年齢から成年であるかを判定するサンプルコードをご覧ください。

<?php

// 時間
$hour = 20;

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

?>
こんばんは

時間を記憶する$hourの値によって4つ分岐処理を記述しています。
if文の条件式から順番に判定していきますが、$hourは20であるため、いずれの条件式も真にならず、else文の処理が実行されます。

また、$hourが15の場合、elseif文(2個目)が実行されるため、else文は実行されません。

<?php

// 時間
$hour = 15;

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

?>
こんにちは

このようにelse文を使うことで、if文-elseif文-else文を通して何かしらの処理を必ず実行するようにできます。

演習問題

問題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円

まとめ

else文はif文-elseif文に当てはまらない場合の処理を分岐できます。
頻繁に使うので、覚えておきましょう。