可伸缩的方式来编写if else范围检查器


Scaleable way to write if else range checker

我有一个函数,它接受一个变量,然后检查数字,如果数字落在一个范围内,它输出一些文本,我正在寻找一个更好的方式来写它,这样我就不必写数百万行,如果客户端想要在未来扩大它-下面的代码:

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

}

您可以使用数学函数round()来获得该值,而不是进行这样的操作。

很简单,这和你的代码完全一样:

function scale_filter($scale) {
  if($scale <= 949) {
    return $scale . ' kWp';
  } elseif($scale >= 950 && $scale <= 3049) {
    return round($scale/1000,1) . ' MWp';
  }
}