// 构建规则,这里可以使用两个数组 key为价格 值为区间
$rules = [
330=>[0,100],
300=>[100,300],
280=>[300,500],
220=>[500,1024],
150=>[1024,3*1024],
36=>[100*1024, PHP_INT_MAX],
];
function calc($used, $rules){
$sum = 0;
foreach ($rules as $key => $value){
// 大于计费段
if($used < $value[0]) break;
// 累加前期计费
if($used >= $value[1]) {
$sum += $key * ($value[1] - $value[0]);
}
// 在最后计费段内
if($value[0] < $used && $used <= $value[1]){
$sum += ($used - $value[0]) * $key;
}
}
return round($sum, 2);
}