本文目录导读:

要统计两支球队的传球成功率,你需要有一个数据结构来存储传球事件,下面我给出一个完整的 PHP 示例代码,涵盖数据定义、统计计算和结果输出。
数据结构定义
假设每一条传球记录包含:
team:球队名(A 或 B)success:是否成功(true/false 或 1/0)
<?php
// 模拟传球数据(实际项目中通常来自数据库)
$passes = [
['team' => 'A', 'success' => true],
['team' => 'A', 'success' => false],
['team' => 'A', 'success' => true],
['team' => 'B', 'success' => false],
['team' => 'B', 'success' => true],
['team' => 'B', 'success' => true],
['team' => 'A', 'success' => true],
['team' => 'B', 'success' => false],
// ... 更多数据
];
?>
统计每队传球成功率的函数
function calculatePassSuccessRate(array $passes): array
{
$stats = [];
foreach ($passes as $pass) {
$team = $pass['team'];
$success = $pass['success'];
// 初始化队伍统计
if (!isset($stats[$team])) {
$stats[$team] = [
'total' => 0, // 总传球数
'success' => 0, // 成功传球数
'rate' => 0.0 // 成功率
];
}
// 累加数据
$stats[$team]['total']++;
if ($success) {
$stats[$team]['success']++;
}
}
// 计算每个队的成功率
foreach ($stats as &$teamStat) {
if ($teamStat['total'] > 0) {
$teamStat['rate'] = $teamStat['success'] / $teamStat['total'] * 100;
}
}
unset($teamStat);
return $stats;
}
对比哪队传球成功率更高
function compareTeams(array $stats): string
{
if (count($stats) < 2) {
return "数据不足,无法比较两队";
}
// 按成功率降序排序
uasort($stats, function($a, $b) {
return $b['rate'] <=> $a['rate'];
});
$teams = array_keys($stats);
$topTeam = $teams[0];
$secondTeam = $teams[1];
// 如果两队成功率相同(精确到小数后)
if (abs($stats[$topTeam]['rate'] - $stats[$secondTeam]['rate']) < 0.0001) {
return "两队传球成功率相同";
}
return "{$topTeam}队更高 ({$stats[$topTeam]['rate']}%)";
}
完整运行示例
<?php
// 模拟数据
$passes = [
['team' => 'A', 'success' => true],
['team' => 'A', 'success' => false],
['team' => 'A', 'success' => true],
['team' => 'A', 'success' => true],
['team' => 'B', 'success' => false],
['team' => 'B', 'success' => true],
['team' => 'B', 'success' => true],
['team' => 'B', 'success' => true],
['team' => 'B', 'success' => false],
];
// 统计
$stats = calculatePassSuccessRate($passes);
// 输出结果
echo "各队传球统计:\n";
foreach ($stats as $team => $data) {
printf(
"%s队:总传球 %d 次,成功 %d 次,成功率 %.1f%%\n",
$team,
$data['total'],
$data['success'],
$data['rate']
);
}
echo "\n比较结果:";
echo compareTeams($stats) . "\n";
?>
输出示例:
各队传球统计:
A队:总传球 4 次,成功 3 次,成功率 75.0%
B队:总传球 5 次,成功 3 次,成功率 60.0%
比较结果:
A队更高 (75%)
如果是数据库数据
如果你是从数据库(如 MySQL)获取传球数据,可以直接用 SQL 聚合:
SELECT
team,
COUNT(*) AS total_passes,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) AS successful_passes,
ROUND(SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) / COUNT(*) * 100, 2) AS success_rate
FROM pass_records
GROUP BY team
ORDER BY success_rate DESC;
然后在 PHP 中取出结果比较第一行和第二行的 success_rate 即可。
注意事项
- 如果传球记录较少,成功率可能会因偶然性较大,建议结合比赛场景分析。
- 实际项目中,
success字段通常用 0 或 1 表示。 - 对于足球等体育项目,通常也会区分关键传球、长传等维度,如需更细分类,可类似扩展数据结构。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播