php项目统计球员评分最高者是谁?

wen PHP项目 8

PHP 项目:统计球员评分最高者

下面给你一个完整的示例,包含数据、统计逻辑和输出。

php项目统计球员评分最高者是谁?

基础版本(数组遍历)

<?php
// 球员数据:姓名 => 评分
$players = [
    '梅西'   => 9.8,
    '姆巴佩' => 9.5,
    '哈兰德' => 9.6,
    'C罗'    => 9.2,
    '内马尔' => 9.3,
];
// 方法1:用 max() + array_search()
$maxScore = max($players);
$bestPlayer = array_search($maxScore, $players);
echo "最高分球员:{$bestPlayer},评分:{$maxScore}";

推荐版本(保留所有并列最高分)

<?php
$players = [
    ['name' => '梅西',   'score' => 9.8],
    ['name' => '姆巴佩', 'score' => 9.5],
    ['name' => '哈兰德', 'score' => 9.6],
    ['name' => 'C罗',    'score' => 9.8], // 并列最高
];
// 找出最高分
$max = max(array_column($players, 'score'));
// 筛选所有达到最高分的球员
$best = array_filter($players, fn($p) => $p['score'] == $max);
// 输出
foreach ($best as $p) {
    echo "最高分:{$p['name']} - {$p['score']}\n";
}

从数据库统计(MySQL + PDO)

<?php
$pdo = new PDO('mysql:host=localhost;dbname=football;charset=utf8mb4', 'root', '123456');
// 方式1:只取一个
$sql = "SELECT name, score FROM players ORDER BY score DESC LIMIT 1";
$row = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC);
echo "最高分:{$row['name']} - {$row['score']}";
// 方式2:取所有并列最高(子查询)
$sql = "SELECT name, score FROM players 
        WHERE score = (SELECT MAX(score) FROM players)";
$rows = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $r) {
    echo "{$r['name']} - {$r['score']}\n";
}

按球队/赛季分组统计最高分

<?php
$players = [
    ['name' => '梅西',   'team' => 'A队', 'score' => 9.8],
    ['name' => '姆巴佩', 'team' => 'A队', 'score' => 9.5],
    ['name' => '哈兰德', 'team' => 'B队', 'score' => 9.6],
    ['name' => 'C罗',    'team' => 'B队', 'score' => 9.9],
];
$result = [];
foreach ($players as $p) {
    $team = $p['team'];
    if (!isset($result[$team]) || $p['score'] > $result[$team]['score']) {
        $result[$team] = $p;
    }
}
print_r($result);
/*
Array (
    [A队] => ['name'=>'梅西','team'=>'A队','score'=>9.8]
    [B队] => ['name'=>'C罗','team'=>'B队','score'=>9.9]
)
*/

关键点说明

场景 推荐做法
简单数组 max() + array_search()
需要并列 max() + array_filter()
数据库 ORDER BY score DESC LIMIT 1
需要并列 WHERE score = (SELECT MAX(score)...)
分组统计 foreach 动态比较,或 SQL GROUP BY

如果你有具体的数据结构(比如从 API、Excel、数据库来的),可以把格式贴出来,我帮你写针对性的代码。

抱歉,评论功能暂时关闭!