Php均匀地对多个产品应用折扣

时间:2017-11-06 17:26:03

标签: php

我试图找出一些东西。我希望将优惠券/折扣金额均匀地应用于多个产品。

例如,如果我有一个包含3个项目的数组

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [price] => 10.00
        )

    [1] => stdClass Object
        (
            [id] => 2
            [price] => 20.00
        )

    [2] => stdClass Object
        (
            [id] => 3
            [price] => 30.00
        )

)

我的优惠券价格是10美元折扣

我试过这个:

foreach ($array as $row) {
   $data['price'] = ($row->price - 10 / 3) * 100
}

所以基本上我想从每个项目的价格中按比例扣除总计10个,最后得到的结果如下:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [price] => 7.50
        )

    [1] => stdClass Object
        (
            [id] => 2
            [price] => 17.50
        )

    [2] => stdClass Object
        (
            [id] => 3
            [price] => 25.00
        )

)

其中总价格总和为50,而不是原始的60

1 个答案:

答案 0 :(得分:0)

因此,根据问题的评论,您希望将优惠券价值按比例(不均匀)分配给所有商品的价格。这很简单,它比编程问题更像数学问题。

  1. x计算为coupon / sum(prices)
  2. 遍历所有项目并从x * item_price
  3. 中减去item_price
  4. 那就是它。
  5. 对于您的示例(coupon = 10prices = [10, 20, 30]),结果为:

    1. x = 10 / 60 = 0.1666667
    2. 从每个项x * item_price中减去item_price
      • 10 - 10 * 0.1666667 = 10 - 1.6666667 = 8.33333
      • 20 - 20 * 0.1666667 = 20 - 3.3333333 = 16.6666
      • 30 - 30 * 0.1666667 = 30 - 5 = 25
    3. 验证:1.666667 + 3.3333333 + 5 = 10