php 將兩個不同 array 算出個別的價格並加總?

发布于 2022-09-11 14:53:29 字数 1112 浏览 7 评论 0

假設前端為

<input type="hidden" name="cart_prod_id[]" value="<?=$row['prod_id'];?>">
<input type="hidden" name="cart_quantity[]" value="<?=$row['quan'];?>">

後端

foreach($_POST["cart_prod_id"] as $value){
   echo $value;
}
foreach($_POST["cart_quantity"] as $value){
   echo $value;
}

送出後可以得到假設

11510612910751031

但其實是

// 商品ID
115
106
129
107

// 數量
5
10
3
1

我要先找出商品ID,去找他自己的 price
之後再回來乘上對應的數量

// 商品ID -> 數量
115 -> 5
106 -> 10
129 -> 3
107 -> 1

請問我該怎麼算出每個商品價格並加總?!
我的作法是這樣
但都只會算最後那一筆

$i = 0;
$productTotal = null;
foreach($_POST["cart_prod_id"] as $value){
      $product = mysqli_fetch_array($pdo->query(
        "SELECT
          p.price,
          p.original_price
        FROM `product` as p
        WHERE p.prod_id = '{$value}' "
      ));

      $productTotal += $product['price'] * $_POST["cart_quantity"][$i];

      $i++;
    }
    
echo $productTotal;

思路已死,懇請大神降臨

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞清仓 2022-09-18 14:53:29

<?php
# 以下代码均未作容错处理。
$goods_id = [1,2,3,4,5,6];
$number = [1,5,6,7,7,8];

$goods_number = array_combine($goods_id,$number);
$goods_id_tmp = implode(',', $goods_id);
$sql = <<<SQL
SELECT 
    `p`.`prod_id`,`p`.`price`,`p`.`original_price`
FROM `product` as p
WHERE `p`.`prod_id` in ({$goods_id_tmp})

SQL;
# .... 此处假设你执行了上面SQL 拿到了结果 这里是假数据
$result = [
    [
    'prod_id'=>2,'price'=>'10.22','original_price'=>'100.00',
    ],
    [
    'prod_id'=>2,'price'=>'120.22','original_price'=>'10310.00',
    ],
    [
    'prod_id'=>3,'price'=>'130.22','original_price'=>'103210.00',
    ],
    [
    'prod_id'=>4,'price'=>'150.22','original_price'=>'12300.00',
    ],
];
$result = array_reduce($result, function($item,$next)use($goods_number){
    $number =$goods_number[$next['prod_id']]??0; 
    return bcmul($next['price'],$number,2);
},0);

var_dump($result);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文