当前位置:首页 > PHP

php实现并列排名

2026-02-15 13:04:45PHP

PHP实现并列排名的方法

并列排名是指当多个数据具有相同的值时,它们会被赋予相同的排名,而后续的排名会根据并列的数量进行跳过。以下是几种实现并列排名的PHP方法:

使用数组排序和循环

$scores = [100, 90, 90, 80, 75, 60, 60, 60, 30];
rsort($scores); // 降序排序

$rank = 1;
$ranks = [];
$previousScore = null;

foreach ($scores as $index => $score) {
    if ($score !== $previousScore) {
        $rank = $index + 1;
    }
    $ranks[$index] = $rank;
    $previousScore = $score;
}

print_r($ranks);

使用array_count_values函数

$scores = [100, 90, 90, 80, 75, 60, 60, 60, 30];
rsort($scores); // 降序排序

$counts = array_count_values($scores);
$ranks = [];
$currentRank = 1;

foreach ($counts as $score => $count) {
    $rankKeys = array_keys($scores, $score);
    foreach ($rankKeys as $key) {
        $ranks[$key] = $currentRank;
    }
    $currentRank += $count;
}

print_r($ranks);

使用数据库查询实现

如果数据存储在数据库中,可以使用SQL的窗口函数(MySQL 8.0+支持):

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $pdo->query("
    SELECT 
        score,
        DENSE_RANK() OVER (ORDER BY score DESC) AS rank
    FROM scores_table
");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

处理关联数组的情况

当需要保持数据与原始数组的关联时:

php实现并列排名

$students = [
    ['name' => 'Alice', 'score' => 100],
    ['name' => 'Bob', 'score' => 90],
    ['name' => 'Charlie', 'score' => 90],
    ['name' => 'David', 'score' => 80]
];

usort($students, function($a, $b) {
    return $b['score'] - $a['score'];
});

$rank = 1;
$previousScore = null;

foreach ($students as &$student) {
    if ($student['score'] !== $previousScore) {
        $student['rank'] = $rank;
    } else {
        $student['rank'] = $rank - 1;
    }
    $previousScore = $student['score'];
    $rank++;
}

print_r($students);

这些方法可以根据具体需求进行调整,适用于各种需要处理并列排名的场景。

标签: php
分享给朋友:

相关文章

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…