很多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 条评论