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