改善其他条件

时间:2013-10-02 17:12:46

标签: php if-statement

如何让下面的代码更优雅?目前我必须手动添加每个条件。有没有办法可以检查$ 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
}

2 个答案:

答案 0 :(得分:8)

我会用

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

也许你应该稍微改变一下索引,但关键是,当你倒退时,你不需要两次比较(and算子)。

答案 1 :(得分: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>';
 }