很多PHP系统会用到通过积分判断用户等级,也就是说通过一个数字判断属于的范围。
假如通过[0,100,250,500,1000,2000]中找出一个数字所在的位置对应的等级。
方法一
通过if和elseif通过条件一一列出,确定是如果等级越多,if和elseif越多,对于过多的规则就不合适了,影响了效率。
if($point >= 0 && $point < 100){
$level = 1;
}elseif($point >= 100 && $point < 250){
$level = 2;
}elseif($point >= 250 && $point < 500){
$level = 3;
}elseif($point >= 500 && $point < 1000){
$level = 4;
}elseif($point >= 1000 && $point < 2000){
$level = 5;
}elseif($point >= 2000){
$level = 6;
}else{
$level = 1;
}
方法二
因为范围一般是不重复的和重合的,那么通过当前值插入到排序中,定位位置即可。
function level($t,$points){
$i = in_array($t,$points) ? 1 : 0; //如果插入值是数组中存在的,那么去重会去掉,所以+1
array_push($points,$t);
$points = array_unique($points);
sort($points);
return $i + array_search($t,$points);
}
目前有 0 条评论