我目前正在开发一个网站(由带有论坛的 cms 组成),我想为每个用户提供执行特定任务的积分(每次都是 ++),这最终应该给他们一个排名。
例如。如果用户发了一篇帖子,他们会得到 5 分,如果用户提交了一个话题/主题,他们会得到 20 分,依此类推,如果分数超过 M 并低于 MX,则排名将是R等级等。
M = 获得排名所需的最低分数。
MX = 获得排名所需的最大积分。
R = 等级(例如初学者、大师等)。
希望一切都清楚,它有点像传统的论坛积分系统,您为帖子提供积分 - 这将为他们提供显示标题/排名。
我目前将点存储在 MySQL 数据库中,并通过 PHP 使用 if 语句分配排名,如下所示:
if ($points > 0 && < 100) {
$rank = 'Beginner';
}
是它们的某种类、库、函数、公式、方法;您可以建议哪个可以使这更容易,或者您能想到更好的方法吗?
Cheers!
您不需要同时存储最小值和最大值。 (我想,除非你的排名的分值不连续。)我将通过将你的排名放入一个数组中来做到这一点,并按该排名的最小值索引,以相反的顺序:
$ranks = array(
500 => 'Cthuloid',
250 => 'Veteran',
100 => 'Beginner',
50 => 'Noob'
);
然后编写一个短路循环来查找第一个大于或等于用户分数的排名:
function getRankOfScore($score)
{
foreach ($ranks as $value => $name) {
if ($score >= $value) {
return $name;
}
}
return 'Unranked';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)