匹配数量与最接近的折扣金额

时间:2018-06-08 12:23:52

标签: php

我有一个我正在开发的购物车,需要找出一种方法来将折扣率与数量相匹配。

折扣率适用于

  • 1项
  • 2项(5%折扣)
  • 5项(10%折扣)
  • 10项(20%折扣)

因此2-4项将获得2项折扣,5-9项将获得5项折扣。 10件商品可获得10件商品折扣。

让我们说客户购买了7件商品。该代码需要应用5个项目的折扣率。

我想到了一个for循环,然而它自动递增值for (int i = 0; i < 5; i++);我不确定如何将折扣率与此相关联,并以正确的折扣率停止变量。

我还看到了像这样的代码.. (quantity * unitcost) - (int (quantity / 2) * (unitcost / 2)),它只对每一个项目应用特定的折扣,以便无法工作。

我搜索谷歌这个,但一直看到如何在特定购物车中进行数量折扣的例子。

$quantity = quantity of items in cart

如果有办法将折扣设置为数组并匹配最接近最佳场景的方式,除非有人知道更好的方式。

$discount = array();
$Discount[1] = 0 percent
$Discount[2] = 5 percent
$Discount[5] = 10 percent
$Discount[10] = 20 percent

我以这些折扣为例。折扣实际上将从产品数据库中提取,因为不同的商品可以有不同的折扣率。

我希望我能展示一些部分正常运行的代码,但我对这个代码感到茫然。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

简单使用if和elseif可以轻松实现。

if ($quantity >= 10) {
    $discount = 20;
} elseif ($quantity >= 5) {
    $discount = 10;
} elseif ($quantity >= 2) {
    $discount = 5;
} else {$discount = 0;}

可以使用从数据库中检索的动态折扣和数量来处理相同的逻辑。

并根据您使用数据库中的值进行更新来执行此操作:

$input = array("1"=>"0","2"=>"5","5"=>"10","10"=>"20");
$reversed = array_reverse($input,true);

foreach ($reversed as $qtydiscount => $discount) {

    if ($quantity >= $qtydiscount) {
        break;
    }
}

echo $discount;