You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于MySQL数据构建PHP排行榜逻辑(含并列排名规则)

基于MySQL+PHP实现带并列规则的排行榜

核心规则回顾

  • 积分(Points)越高,排名越靠前
  • 积分相同时,获胜次数(wins)越多,排名越高
  • 并列排名时显示相同序号,后续排名跳过对应数量的序号(如2个并列第2,则下一个排名为4)

实现步骤

1. MySQL数据查询

先从数据库中按规则取出排序后的用户数据,仅需按points降序、wins降序排序,排名逻辑在PHP中处理:

SELECT username, points, wins 
FROM users 
ORDER BY points DESC, wins DESC;

2. PHP排名计算逻辑

遍历查询结果,通过对比当前用户与上一个用户的积分和获胜次数,动态计算排名:

  • 初始化$counter记录遍历位置,$rank记录当前显示的排名
  • 若当前用户与上一个用户的积分、获胜次数完全一致,沿用之前的排名
  • 若不一致,将$rank更新为当前计数器值
  • 计数器每次遍历都递增,保证排名跳跃的准确性

3. 完整代码示例

<?php
// 数据库连接信息
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

try {
    // 建立PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 查询排序后的用户数据
    $stmt = $pdo->query("SELECT username, points, wins FROM users ORDER BY points DESC, wins DESC");
    $users = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 初始化排名变量
    $rank = 1;
    $counter = 1;
    $prevPoints = null;
    $prevWins = null;

    // 输出排行榜
    echo "<table border='1'>";
    echo "<tr><th>Rank</th><th>Username</th><th>Points</th><th>Wins</th></tr>";
    
    foreach ($users as $user) {
        // 判断是否需要更新排名
        if ($user['points'] !== $prevPoints || $user['wins'] !== $prevWins) {
            $rank = $counter;
            $prevPoints = $user['points'];
            $prevWins = $user['wins'];
        }

        // 输出当前用户行
        echo "<tr>";
        echo "<td>{$rank}</td>";
        echo "<td>{$user['username']}</td>";
        echo "<td>{$user['points']}</td>";
        echo "<td>{$user['wins']}</td>";
        echo "</tr>";

        $counter++;
    }
    
    echo "</table>";

} catch(PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}
?>

4. 示例输出

运行代码后,会生成符合要求的排行榜,与题目给出的示例一致:

RankUsernamePointsWins
1User A10050
2User B9642
2User C9642
4User D9641
5User E9640
6User F9442
6User G9442
6User H9442
9User I9040
10User J8841

内容的提问来源于stack exchange,提问作者Garvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:15:41