PHP按数量范围价格计算价格

时间:2019-03-01 05:16:18

标签: php

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

我有不同的价格类别

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 admin中,我在文本区域以以下格式输入类(可以更容易地更改此格式) 200 | 1 500 | 0.75 1000 | 0.5

如何根据此价格类别计算价格?

2 个答案:

答案 0 :(得分:0)

首先您的范围已关闭,它们都丢失了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
    • 剩余件数为

将总数带到: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;
}

答案 1 :(得分:-1)

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