【问题标题】:PHP Calculate pricing by quantity range pricePHP 按数量范围价格计算定价
【发布时间】:2019-03-01 16:11:03
【问题描述】:

我有一种情况需要根据数量范围计算产品价格,这里是我的价格范围逻辑

我有不同的价格等级

50 - 200 美元是 1/50 美元 从 250 - 500 它是 $0.75/50 从 550 - 1000 是 $0.5/50

所以如果有人订购 1,000 前 200 个将按 1/50 美元(4 美元)计算 然后从 250 - 500 将是 $0.75/50 所以($4.5) 然后从 550 - 1000 将是 $0.5/50 所以($5) 总计:4 + 4.5 + 5 = 13.5 美元

在 PHP 管理中,我在文本区域中输入以下格式的类(这种格式可以更容易地更改) 200|1 500|0.75 1000|0.5

如何根据这个价格等级计算价格?

【问题讨论】:

标签: php


【解决方案1】:

首先你的范围已经关闭,它们都缺少 50 件

前 200 件将计算在1 / 50
然后从 250 到 500 件,那就是.75 / 50


所以如果你卖了 1000 件就分解它:

  • 前 0 - 250 件将在1 / 50 出售
    • (250 - 0) * 0.02 = 5
    • 1000 - (250 - 0) = 750
    • 剩余数量为750件
  • 接下来的 250 - 550 件将在.75 / 50 出售
    • (550 - 250) * 0.015 = 4.5
    • 750 - (550 - 250) = 450
    • 剩余数量为 450 件
  • 接下来的 550 到 ???作品将在.5 / 50 出售
    • 450 * 0.01 = 4.5
    • 剩余件数为0

将总数带到:5 + 4.5 + 4.5 = 14


function getPrice($amount) {
    $prices = [
        250     => 1.00 / 50,
        550     => 0.75 / 50,
        1000    => 0.50 / 50,
    ];
    ksort($prices);


    $total = 0.0;
    $lowerbound = 0;
    foreach($prices as $bound => $price) {
        if ($amount < $bound) return $total + ($amount * $price);
        $total += ($bound - $lowerbound) * $price;
        $amount -= ($bound - $lowerbound);
        $lowerbound = $bound;
    }
    return $total;
}

或者,您可以从上限开始计算相同的价格

function getReversedPrice($amount) {
    $prices = [
        0   => 1.00 / 50,
        250 => 0.75 / 50,
        550 => 0.50 / 50,
    ];
    krsort($prices);

    $total = 0.00;
    foreach($prices as $bound => $price) {
        if ($amount < $bound) continue;
        $total += ($amount - $bound) * $price;
        $amount -= ($amount - $bound);
    }
    return $total;
}

【讨论】:

    【解决方案2】:

    您只需要添加条件,如果数字在 50-200 之间,则计算 1$,例如如果数字大于 200,则计算 2$,依此类推

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 2014-01-31
      • 2017-03-20
      • 2021-12-10
      相关资源
      最近更新 更多