我遇到一种情况,我需要根据数量范围(这里是我的价格范围逻辑)来计算产品价格
我有不同的价格类别
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
如何根据此价格类别计算价格?
答案 0 :(得分:0)
首先您的范围已关闭,它们都丢失了50件
前200件将在
1 / 50
处计算
然后从250到500件变成.75 / 50
因此,如果您卖出1000件,就将其分解:
1 / 50
的价格出售
(250 - 0) * 0.02 = 5
1000 - (250 - 0) = 750
.75 / 50
的价格出售
(550 - 250) * 0.015 = 4.5
750 - (550 - 250) = 450
.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 $,依此类推