最近遇到一个阶梯计费的case ,想了挺久的,还是没有很好的解决方案,今天突发奇想,被我发现了。哈哈哈哈
其实当时想了配置文件,但是没有想到这个点子上,所以记录下,下次项目中参考使用
<?php
// 阶梯计费代码
function calcMoney($n, $config) {
$money = 0;
foreach ($config as $k => $value) {
if ($n >= $value['min'] && $n <= $value['max']) {
$money += ($n - $value['min'] + 1) * $value['fee'];
break;
}
$money += ($value['max'] - $value['min'] + 1) * $value['fee'];
}
return $money;
}
// 配置文件
$config = [
[
'min' => 1,
'max' => 5,
'fee' => 30,
],
[
'min' => 6,
'max' => 10,
'fee' => 25,
],
[
'min' => 11,
'max' => 20,
'fee' => 20,
],
[
'min' => 21,
'max' => 50,
'fee' => 15,
],
[
'min' => 51,
'max' => 100,
'fee' => 10,
],
[
'min' => 101,
'max' => 500,
'fee' => 9,
],
[
'min' => 501,
'max' => 1000,
'fee' => 8,
],
[
'min' => 1001,
'max' => 2000,
'fee' => 7,
],
[
'min' => 2001,
'max' => 3000,
'fee' => 6,
],
[
'min' => 3001,
'max' => 4000,
'fee' => 5,
],
[
'min' => 4001,
'max' => 100000,//最大值正无穷表示尽可能大
'fee' => 4,
],
];
$m = calcMoney(7, $config);
echo $m;
如此一个简单的函数calaMoney 即可简单的计算出费用。