我目前正在一个网站上工作(由带有论坛的cms组成),我想给每个用户点做特定的任务(每次都是++),这最终会给他们一个等级.
例如,如果用户做了一个帖子,他们会获得5分,如果用户提交了一个主题/话题,他们就会获得20分等等,如果这些分数超过M而等级低于MX则排名就像是他们的是R级等等.
M =获得排名所需的最低点数.
MX =获得排名所需的最大分数.
R =等级(例如初级,硕士等).
希望一切都很清楚,它有点像传统的论坛积分系统,你给出的帖子点数 - 这将给他们一个显示标题/排名.
我目前正在MySQL数据库中存储这些点,并通过PHP为if语句分配如下语句:
if ($points > 0 && < 100) {
$rank = 'Beginner';
}
Run Code Online (Sandbox Code Playgroud)
是他们的某种类,库,功能,公式,方法; 你可以建议哪些可以让你更容易,或者你能想到更好的方式?
干杯!
您不需要同时存储最小值和最大值.(除非你的等级的点数值是非连续的,我想.)我这样做是通过将你的等级放在一个数组中,以相反的顺序用该等级的最小值索引:
$ranks = array(
500 => 'Cthuloid',
250 => 'Veteran',
100 => 'Beginner',
50 => 'Noob'
);
Run Code Online (Sandbox Code Playgroud)
然后只需编写一个短路循环来找到大于或等于用户得分的第一个等级:
function getRankOfScore($score)
{
foreach ($ranks as $value => $name) {
if ($score >= $value) {
return $name;
}
}
return 'Unranked';
}
Run Code Online (Sandbox Code Playgroud)