PHP获取用户等级
由于项目需要用到用户等级功能,网络上的大部分都是循环判断,感觉不太优雅,所以自己写了一个,大家共同进步,有更好的方法可以提出。
// 等级配置文件 exp:所需经验值 title:等级头衔 key:等级图标 $grade = [ 1 => ['exp' => 0, 'title' => '可爱萌新', 'key' => 'new'], 2 => ['exp' => 10, 'title' => '可爱萌新', 'key' => 'new'], 3 => ['exp' => 30, 'title' => '可爱萌新', 'key' => 'new'], 4 => ['exp' => 60, 'title' => '可爱萌新', 'key' => 'new'], 5 => ['exp' => 100, 'title' => '可爱萌新', 'key' => 'new'], 6 => ['exp' => 180, 'title' => '发烧友', 'key' => 'hot'], 7 => ['exp' => 340, 'title' => '发烧友', 'key' => 'hot'], 8 => ['exp' => 580, 'title' => '发烧友', 'key' => 'hot'], 9 => ['exp' => 900, 'title' => '发烧友', 'key' => 'hot'], 10 => ['exp' => 1300, 'title' => '发烧友', 'key' => 'hot'], 11 => ['exp' => 1780, 'title' => '高能达人', 'key' => 'power'], 12 => ['exp' => 2340, 'title' => '高能达人', 'key' => 'power'], 13 => ['exp' => 2980, 'title' => '高能达人', 'key' => 'power'], 14 => ['exp' => 3700, 'title' => '高能达人', 'key' => 'power'], 15 => ['exp' => 4500, 'title' => '高能达人', 'key' => 'power'], 16 => ['exp' => 5380, 'title' => '资深大师', 'key' => 'master'], 17 => ['exp' => 6240, 'title' => '资深大师', 'key' => 'master'], 18 => ['exp' => 7380, 'title' => '资深大师', 'key' => 'master'], 19 => ['exp' => 8500, 'title' => '资深大师', 'key' => 'master'], 20 => ['exp' => 9700, 'title' => '资深大师', 'key' => 'master'], 21 => ['exp' => 10980, 'title' => '传说', 'key' => 'legend'], 22 => ['exp' => 12340, 'title' => '传说', 'key' => 'legend'], 23 => ['exp' => 13780, 'title' => '传说', 'key' => 'legend'], 24 => ['exp' => 15300, 'title' => '传说', 'key' => 'legend'], 25 => ['exp' => 16900, 'title' => '传说', 'key' => 'legend'], ]; /** * funcionName 获取等级级别 * * options. * * @param int $score 用户积分 * @return array * * @author 雪后西溏 <958808264@qq.com> */ function get_grade_level($score) { // 获取配置文件 $data = config('grade'); // 获取经验值 $exp = array_column($data, 'exp'); // 获取在基准线中的等级 if (in_array($score, $exp)) { $level = array_flip($exp)[$score] + 1; } else { // 把分数混入数组并排序 array_push($exp, $score); sort($exp); $level = array_flip($exp)[$score]; } $result = [ 'level' => $level, 'key' => $data[$level]['key'], 'title' => $data[$level]['title'], ]; return $result; } // 获取等级级别 $res = get_grade_level(69); var_dump($res);
结果如图


浙公网安备 33010602011771号