PHP实现每购买10张票折扣递增2欧元的功能求助
实现每满10张票递增2欧元折扣的解决方案
嘿,我懂你的需求啦!你现在的代码只能在票数刚好是10的倍数时减2欧元,但你想要的是每满10张就多减2欧元——比如买20张减4欧,30张减6欧,以此类推对吧?咱们来调整一下代码逻辑就行:
核心逻辑修改思路
原来的代码只判断了「票数是否是10的倍数」,然后固定减2欧。正确的逻辑应该是:
- 计算总票数里包含多少个完整的10张组(比如23张就是2个组,35张就是3个组)
- 每个组对应2欧元折扣,总折扣 = 组数 × 2
- 最终总价 = 原价(票数×2) - 总折扣
修改后的完整代码
<h1>Aantal gekochte tickets</h1> <br><br> <form method="POST"> Aantal tickets: <input name="tickets" type="number" min="1"></input><br><br> <input type="submit" name="submit" value="Bereken totaal"></input> </form> <?php if(isset($_POST['tickets'])) { // 先把输入转为整数,避免非数字输入的问题 $tickets = intval($_POST['tickets']); if($tickets < 1) { echo "<br><br>Voer een geldig aantal tickets in (ten minste 1)!"; exit; } $prijsPerTicket = 2; $originaalTotaal = $tickets * $prijsPerTicket; echo "<br><br>1 Ticket kost {$prijsPerTicket} euro<br><br>"; // 计算有多少个完整的10张组 $aantalTieners = floor($tickets / 10); $korting = $aantalTieners * 2; if($korting > 0) { $totaal = $originaalTotaal - $korting; echo "Je krijgt {$korting} euro korting ({$aantalTieners} keer 2 euro voor elke 10 tickets)<br><br>"; } else { $totaal = $originaalTotaal; } echo "Totaal kosten de tickets: {$totaal} euro"; } ?>
额外优化的小细节
- 给输入框加上了
type="number"和min="1",引导用户输入有效的正整数 - 增加了输入合法性检查,防止用户输入0或者负数
- 用变量存储单价,后续如果票价变动,只需要改一个地方就行
- 折扣的提示信息更清晰,让用户知道自己为什么得到了这么多折扣
这样修改后,不管用户买10张、25张还是50张,都会按照每10张减2欧的规则计算折扣啦~
内容的提问来源于stack exchange,提问作者user9771053
相关产品推荐
相关产品推荐

