You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:57:49