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

PHP购物小练习:按商品对应单价与购买数量计算应付总金额求助

问题解决方案

核心问题分析

  • 商品价格与商品ID没有做统一映射,大量重复的if-else判断难以维护,也无法快速拿到所选商品的对应单价
  • 最终计价逻辑硬编码使用书籍单价$book计算,没有根据用户选择的商品动态调整

优化实现思路

用数组统一维护所有商品的ID、名称、单价信息,后续新增商品仅需要修改数组即可,无需调整业务逻辑

修改后完整PHP代码(carrito.php)

<?php
session_start();
$_SESSION["nombre"] = "Comprador";
echo "<p><b><u>欢迎 $_SESSION[nombre]</u></b></p>";

// 统一维护商品信息:键为商品ID,值存商品名和对应单价
$products = [
    1 => ['name' => '书籍', 'price' => 1.50],
    2 => ['name' => '钢笔', 'price' => 0.50],
    3 => ['name' => '订书机', 'price' => 3.00],
    4 => ['name' => '硬纸板', 'price' => 0.90],
    5 => ['name' => '文件夹', 'price' => 0.20],
    6 => ['name' => '铅笔', 'price' => 0.10],
    7 => ['name' => '套装', 'price' => 5.00] // 注意和前端HTML的价格保持一致,原PHP写的5.5和前端5.0冲突,这里统一为5.0
];

$selectedId = $_POST['articulo'] ?? 0;
$buyNumber = $_POST['number'] ?? 0;

if(isset($_SESSION['nombre'])) {
    // 输出选中商品
    if(isset($products[$selectedId])) {
        echo "您购买的商品是:" . $products[$selectedId]['name'];
    } else {
        echo "错误:您的购物车为空 :(";
    }

    // 输出购买数量
    if(!empty($buyNumber)) {
        echo "<br/>";
        echo "购买数量:" . $buyNumber;
    } else {
        echo "<br/>";
        echo "错误:您必须选择购买数量";
        echo "<br>";
        echo "<a href='inicio.php'> 取消 </a>";
    }
}

// 计算并输出应付金额
if (isset($products[$selectedId]) && !empty($buyNumber)) {
    $totalPrice = $products[$selectedId]['price'] * $buyNumber;
    echo "<br/>";
    echo "应付总金额:" . $totalPrice . " €.";
    echo "<br>";
    echo "<br>";
    echo "<a href='pedidos.php'> 去支付 </a>";
    echo "<br>";
    echo "<a href='inicio.php'> 返回 </a>";
} else if(!isset($_SESSION['nombre'])) {
    echo "会话未启动";
}
?>

补充说明

  • 原前端HTML中套装商品标注价格为5.0€,PHP中定义的$Kit为5.5€,存在数据不一致问题,修改后代码已统一为5.0€,可根据实际需求调整数组中的价格值
  • 该方案扩展性更强,后续新增商品仅需要在$products数组中按格式添加对应条目,同时在前端select中添加对应option即可,无需修改计价逻辑

内容的提问来源于stack exchange,提问作者Semicolon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:54:03