PHP 怎么获取指定信息的排名?

PHP 怎么获取指定信息的排名?,第1张

PHP 怎么获取指定信息的排名?,第2张

$query="select * from info ORDER BY number DESC";

用以上方法查询获得的结果,如果得到 ID 为 6 的排名呢?

做一个投票系统用。需要根据票数实时获取排名。

----------------------- 以下是精选回复-----------------------

答:$key = '';

foreach ($row as $k => $v) {
if ($v['0'] == $id) {
$key = $k + 1;
}
}

return $key;
答:感觉你得依赖 redis,zset 效率更高一些。
答:查了下,ZRANK 是 O(log(N))复杂度。
答:或者在 SQL 上处理排名:
类似于这样的:
https://dba.stackexchange.com/questions/13703/get-the-rank-of-a-user-in-a-score-table
答:实时获取排名猜测读取量很高,应该用缓存存排名。

用 sql 需要嵌套子查询,需要注意索引优化,不然查询会比较慢

php 层面可以考虑
先跑一条 sql "SELECT id from info ORDER BY number DESC"
查询的结果集就是根据投票数倒数排序的
$array = [5,6,1,3,4,2];
array_search(6,$array)// 得到 key 1
那么排名就是 key+1 2

不过这样对同样票数的两个 id 不太友好

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » PHP 怎么获取指定信息的排名?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情