我有一个函数,它接受一个变量,然后检查数字,如果数字落在一个范围内,它输出一些文本,我正在寻找一个更好的方法来编写它,这样我就不必编写数百万行,如果客户希望将来扩展它 - 代码如下:
function scale_filter($scale) {
if($scale <= 949) {
return $scale . ' kWp';
} elseif($scale >= 950 && $scale <= 1049) {
return '1.0 MWp';
} elseif($scale >= 1050 && $scale <= 1149) {
return '1.1 MWp';
} elseif($scale >= 1150 && $scale <= 1249) {
return '1.2 MWp';
} elseif($scale >= 1250 && $scale <= 1349) {
return '1.3 MWp';
} elseif($scale >= 1350 && $scale <= 1449) {
return '1.4 MWp';
} elseif($scale >= 1450 && $scale <= 1549) {
return '1.5 MWp';
} elseif($scale >= 1550 && $scale <= 1649) {
return '1.6 MWp';
} elseif($scale >= 1650 && $scale <= 1749) {
return '1.7 MWp';
} elseif($scale >= 1750 && $scale <= 1849) {
return '1.8 MWp';
} elseif($scale >= 1850 && $scale <= 1949) {
return '1.9 MWp';
} elseif($scale >= 1950 && $scale <= 2049) {
return '2.0 MWp';
} elseif($scale >= 2050 && $scale <= 2149) {
return '2.1 MWp';
} elseif($scale >= 2150 && $scale <= 2249) {
return '2.2 MWp';
} elseif($scale >= 2250 && $scale <= 2349) {
return '2.3 MWp';
} elseif($scale >= 2350 && $scale <= 2449) {
return '2.4 MWp';
} elseif($scale >= 2450 && $scale <= 2549) {
return '2.5 MWp';
} elseif($scale >= 2550 && $scale <= 2649) {
return '2.6 MWp';
} elseif($scale >= 2650 && $scale <= 2749) {
return '2.7 MWp';
} elseif($scale >= 2750 && $scale <= 2849) {
return '2.8 MWp';
} elseif($scale >= 2850 && $scale <= 2949) {
return '2.9 MWp';
} elseif($scale >= 2950 && $scale <= 3049) {
return '3.0 MWp';
} //.... you get the idea
}
答案 0 :(得分:2)
你可以使用数学函数round()
来获得这个值,而不是像这样的荒野。
简单的馅饼,这完全等同于你的代码:
function scale_filter($scale) {
if($scale <= 949) {
return $scale . ' kWp';
} elseif($scale >= 950 && $scale <= 3049) {
return round($scale/1000,1) . ' MWp';
}
}