PHP初心者です。
PHPで自動販売機のお釣りを計算するプログラムを作成しています。
150円のお茶を購入した際のお釣りを表示させるようにしたいです。
以下が現在書いているコードになります。
else if 以降はまだ手を付けていないため、if ($result>=0){}内をまず完成をめざしています。
PHP
1<?php 2 3// 以下は自動販売機のお釣りを計算するプログラムです。 4// 150円のお茶を購入した際のお釣りを計算して表示してください。 5// 計算内容は関数に記述し、関数を呼び出して結果表示すること 6// $yen と $product の金額を変更して計算が合っているか検証を行うこと 7 8// 表示例1) 9// 10000円札で購入した場合、 10// 10000円札x0枚、5000円札x1枚、1000円札x4枚、500円玉x1枚、100円玉x3枚、50円玉x1枚、10円玉x0枚、5円玉x0枚、1円玉x0枚 11 12// 表示例2) 13// 100円玉で購入した場合、 14// 50円足りません。 15 16$yen = 10000; // 購入金額 17$product = 150; // 商品金額 18 19function calc($yen, $product) { 20 // この関数内に処理を記述 21 $money = [10000, 5000, 1000, 500, 100, 50, 10, 5, 1]; //お金の種類 22 $result = $yen - $product; // おつりを計算する 23 $charge = []; // 返り値は配列になるため、空の配列を用意する 24 if ($result>=0){ // お釣りがある場合 25 foreach($money as $val){ 26 // お釣りを貨幣で割った整数値が枚数になるため、floor関数を使う 27 $num = floor($result/$val); 28 // そのまま配列へ格納 29 $charge[$val] = $num; 30 // 貨幣*枚数をお釣りから引いて、お釣りを再度計算する 31 $result -= ($num*$val); 32 } 33 echo $yen."円で購入した場合、<br>"."10000円札x".$charge[1]."枚、5000円札x".$charge[2]."枚、1000円札x".$charge[3]."枚、500円玉x".$charge[4]."枚、100円玉x".$charge[5]."枚、50円玉x".$charge[6]."枚、10円玉x".$charge[7]."枚、5円玉x".$charge[8]."枚、1円玉x".$charge[9]."枚"; 34 } else if($result<0){ // 過不足がある場合 35 foreach($money as $val){ 36 //過不足分を貨幣で割った整数値を配列へ格納する 37 38 } 39 40 } 41} 42?> 43<!DOCTYPE html> 44<html lang="ja"> 45<head> 46<meta charset="utf-8"> 47<title>お釣り</title> 48</head> 49<body> 50 <section> 51 <!-- ここに結果表示 --> 52 <?php 53 calc($yen, $product); 54 ?> 55 </section> 56</body> 57</html>
画面には次のように表示されています。
Warning: Undefined array key 2 in on line 38
Warning: Undefined array key 3 in on line 38
Warning: Undefined array key 4 in on line 38
Warning: Undefined array key 6 in on line 38
Warning: Undefined array key 7 in on line 38
Warning: Undefined array key 8 in on line 38
Warning: Undefined array key 9 in on line 38
10000円で購入した場合、
10000円札x0枚、5000円札x枚、1000円札x枚、500円玉x枚、100円玉x0枚、50円玉x枚、10円玉x枚、5円玉x枚、1円玉x枚
キーが見つからないとのことで、 foreach($money as $val){}内が間違えていると考え、解決策はないか調べていましたが、行き詰ってしまいました。どのようにエラーを解決していけばよいでしょうか?よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。