<?php // array เก็บข้อมูลธนบัตร $bank_notes = array( 100 => 1000, // ธนบัตรมูลค่า 100 บาท จำนวน 1000 ใบ 500 => 100, // ธนบัตรมูลค่า 500 บาท จำนวน 100 ใบ 1000 => 50, // ธนบัตรมูลค่า 1000 บาท จำนวน 50 ใบ ); $sum = 0; // ผลรวมเงินในตู้ เริ่มต้น 0 // วนลูปข้อมูลธนบัตรในตู้ โดย $type เป็นเลขมูลค่าธนบัตร ส่วน $count คือจำนวนธนบัตร foreach ($bank_notes as $type => $count) { // เพิ่มผลรวม $sum += $type * $count; // ประโยคนี้มีความหมายเดียวกันกับ $sum = $sum + ($type * $count); } // แสดงผลรวม echo $sum;
<?php // array เก็บข้อมูลธนบัตร $bank_notes = array( 1000 => 50, // ธนบัตรมูลค่า 1000 บาท จำนวน 50 ใบ 500 => 100, // ธนบัตรมูลค่า 500 บาท จำนวน 100 ใบ 100 => 1000, // ธนบัตรมูลค่า 100 บาท จำนวน 1000 ใบ ); function atm($withdraw) { // ให้สามารถเข้าถึง $bank_notes ที่อยู่ใน global scope (นอกฟังก์ชั่น) ได้ global $bank_notes; // ผลรวมเงินในตู้ เริ่มต้น 0 $sum = 0; // วนลูปข้อมูลธนบัตรในตู้ โดย $type เป็นเลขมูลค่าธนบัตร ส่วน $count คือจำนวนธนบัตร foreach ($bank_notes as $type => $count) { // เพิ่มผลรวม $sum += $type * $count; // ประโยคนี้มีความหมายเดียวกันกับ $sum = $sum + ($type * $count); } // ตรวจสอบจำนวนเงินในตู้กับจำนวนเงินที่ถอน if ($sum < $withdraw) { echo "เงินในตู้ไม่พอจ่าย"; return; } $remain = $withdraw; // วนลูปข้อมูลธนบัตรในตู้ โดย $type เป็นเลขมูลค่าธนบัตร ส่วน $count คือจำนวนธนบัตร foreach ($bank_notes as $type => $count) { // หาจำนวนธนบัตร มูลค่าธนบัตร $type ที่ต้องใช้ $n = (int)($remain / $type); // หาก $n เป็น 0 แสดงว่าไม่ใช้ธนบัตรชนิดนี้ if (!$n) { // ทำลูปรอบต่อไปได้เลย continue; } // หากจำนวนธนบัตรมูลค่า $type ในตู้มีไม่พอ if ($count < $n) { // ให้จำนวนธนบัตรมูลค่า $type ที่จะใช้สำหรับการถอนครั้งนี้เท่ากับที่เหลือในตู้ $n = $count; } // อัพเดทจำนวนธนบัตรมูลค่า $type $bank_notes[$type] -= $n; // ลบจำนวนเงินที่ถอน $remain -= $type * $n; // หากถอนครบแล้ว ให้ออกจากลูปทันที // เช่น ถอน 5000 และมีธนบัตร 1000 ในตู้เพียงพอที่จะจ่าย // ก็ไม่จำเป็นต้องไปตรวจธนบัตรมูลค่าอื่นอีก if (!$remain) { break; } } print_r($bank_notes); } echo '<pre>'; atm(5000); atm(3500); atm(1700); atm(300); atm(100); // หากเป็นจำนวนเงินที่รับมาจากผู้ใช้ // atm($_POST['withdraw']);
เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง