php实现阶梯电费
阶梯电费计算原理
阶梯电费是指根据用电量的不同区间采用不同的电价标准,通常分为多个档次。例如:

- 第一档:0-200度,0.5元/度
- 第二档:201-400度,0.6元/度
- 第三档:401度以上,0.8元/度
PHP实现代码
function calculateElectricityBill($units) {
$bill = 0;
if ($units <= 200) {
$bill = $units * 0.5;
} elseif ($units <= 400) {
$bill = 200 * 0.5 + ($units - 200) * 0.6;
} else {
$bill = 200 * 0.5 + 200 * 0.6 + ($units - 400) * 0.8;
}
return $bill;
}
// 示例使用
$units = 450; // 用电量
$totalBill = calculateElectricityBill($units);
echo "用电量:{$units}度,电费总额:{$totalBill}元";
代码优化版本
function calculateTieredElectricityBill($units, $tiers = [
['limit' => 200, 'price' => 0.5],
['limit' => 400, 'price' => 0.6],
['limit' => PHP_INT_MAX, 'price' => 0.8]
]) {
$bill = 0;
$remainingUnits = $units;
$previousLimit = 0;
foreach ($tiers as $tier) {
if ($remainingUnits <= 0) break;
$currentTierUnits = min($remainingUnits, $tier['limit'] - $previousLimit);
$bill += $currentTierUnits * $tier['price'];
$remainingUnits -= $currentTierUnits;
$previousLimit = $tier['limit'];
}
return $bill;
}
使用说明
- 基础版本直接硬编码了阶梯电费的档次和价格,适合固定费率场景
- 优化版本通过参数化配置阶梯档次,可以灵活调整各档阈值和单价
- 调用时只需传入用电量即可获得计算结果
测试用例示例
$testCases = [
['units' => 100, 'expected' => 50],
['units' => 250, 'expected' => 130],
['units' => 500, 'expected' => 290]
];
foreach ($testCases as $case) {
$result = calculateElectricityBill($case['units']);
echo "用电量:{$case['units']},计算结果:{$result},预期结果:{$case['expected']}\n";
}


