Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php将折扣平均应用于多种产品_Php - Fatal编程技术网

Php将折扣平均应用于多种产品

Php将折扣平均应用于多种产品,php,Php,我在想办法。我想将优惠券/折扣金额均匀地应用于多个产品 例如,如果我有一个包含3项的数组 Array ( [0] => stdClass Object ( [id] => 1 [price] => 10.00 ) [1] => stdClass Object ( [id] => 2 [price] =>

我在想办法。我想将优惠券/折扣金额均匀地应用于多个产品

例如,如果我有一个包含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,那么根据问题下的评论,您希望按比例(而不是平均)将息票价值分配给所有项目的价格。这很简单,与其说是编程问题,不如说是数学问题

  • x
    计算为
    息票/总额(价格)
  • 迭代所有项目并从
    项目价格
  • 就这样
  • 例如(
    优惠券=10
    价格=[10,20,30]
    ),结果是:

  • x=10/60=0.1666667
  • 从每个项目的
    项目价格
    中减去
    x*项目价格
    • 10-10*0.16667=10-1.66667=8.33333
    • 20-20*0.1666667=20-3.3333333=16.6666
    • 30-30*0.1666667=30-5=25

  • 要验证:
    1.666667+3.3333333+5=10

    ,问题是?@u\u mulder问题是它不工作。它不工作如何?你的电脑爆炸了?你有白色屏幕吗?你有错误的结果吗?而且,我不知道你说的“均匀涂抹”是什么意思。在您的结果中,第一项减去2.5美元,第二项减去2.5美元,最后一项减去5美元。您不想从每个项目中减去
    优惠券价值/项目数吗?我会说,这是平均的。平均意味着你把每一项都除以10/3,减去3.33美元,不是吗?这是一个很好的答案!唯一的问题是,如果你的价格以0.99结尾怎么办?比如$10.99、$12.99等等。我已经在我的项目中实现了这个答案,但是它不是很漂亮,因为每行的折扣是3位小数,而不是2位小数。