【PHP】演習問題 – switch文(2)

問題

お会計の合計金額に会員ランクによって割引を適用するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 合計金額は『単価×個数』で計算する
  • 単価、個数、会員ランクはコマンドライン引数で与える(単価、個数、会員ランクの順)
  • 会員ランクはGold、Silver、Bronze、Normalの3種類
  • 割引の条件
    Gold 20%OFF
    Silver 10%OFF
    Bronze 5%OFF
    Normal なし
  • 条件分岐はswitch文を使用する

実行例1

コマンドライン

php practice.php 1350 7 Gold

実行結果

割引率           : 20%
割引金額         : 1890円
合計金額(割引前) : 9450円
合計金額(割引後) : 7560円

実行例2

コマンドライン

php practice.php 1350 7 Silver

実行結果

割引率           : 10%
割引金額         : 945円
合計金額(割引前) : 9450円
合計金額(割引後) : 8505円

実行例3

コマンドライン

php practice.php 1350 7 Normal

実行結果

割引率           : 0%
割引金額         : 0円
合計金額(割引前) : 9450円
合計金額(割引後) : 9450円

解答例

ソースコード

<?php

$price = $argv[1];
$unit = $argv[2];
$member_rank = $argv[3];

$total = $price * $unit;
$subtotal = $total;
$discount = 0;
$discount_rate = 0;

switch( $member_rank ) {
    case 'Gold' :
        $discount_rate = 0.2;
        break;
    case 'Silver' :
        $discount_rate = 0.1;
        break;
    case 'Bronze' :
        $discount_rate = 0.05;
        break;
    default :
        $discount_rate = 0;
}

$discount = $subtotal * $discount_rate;
$total = $subtotal - $discount;

echo '割引率           : '.($discount_rate * 100)."%\n";
echo '割引金額         : '.$discount."円\n";
echo '合計金額(割引前) : '.$subtotal."円\n";
echo '合計金額(割引後) : '.$total."円\n";

?>