5

如何使以下代码更优雅?目前我必须手动添加每个条件。有没有一种方法可以检查 $total_points 的值是否位于数组 $ranking_list 的连续项之间?

function ym_rank(){
$ranking_list = array(0, 400, 1000, 2500, 5000, 10000, 15000, 25000, 40000, 60000, 100000);
    if($total_points >= $ranking_list[0] and $total_points < $ranking_list[1]){
        return '<h2>Rank 0 </h2><br>';
    }
    elseif ($total_points >= $ranking_list[1] and $total_points < $ranking_list[2]){
        return '<h2>Rank 1 </h2><br>';
    }
    .
    .
    .
    so on
}
4

2 回答 2

8

我会用

for ($i = count($ranking_list) - 1; $i >= 0; $i--)
    if ($total_points > $ranking_list[$i])
        return 'Rank is' . $i . '<br>'.

也许你应该稍微移动一下索引,但关键是,当你往回走时,你不需要两个比较(and运算符)。

于 2013-10-02T17:21:53.503 回答
3

你可以去做这样的事情(未经测试)

for($i = 0; $i < count($ranking_list); $i++){
  if($total_points >= $ranking_list[$i] and $total_points < $ranking_list[$i+1]){
    return '<h2>Rank ' . $i . ' </h2><br>';
 }
于 2013-10-02T17:21:33.647 回答