在 PHP 项目中查看双方射门转化率差异
由于你没有提供具体项目代码,我按常见足球数据项目的结构给你一套通用方案,核心公式很简单:

转化率 = 进球数 / 射门数 × 100%
SQL 层面对比(最常见做法)
假设你有 match_stats 表,字段类似:
| id | match_id | team | shots | goals |
|---|
SELECT
team,
shots,
goals,
ROUND(goals / NULLIF(shots, 0) * 100, 1) AS conversion_rate
FROM match_stats
WHERE match_id = ?
ORDER BY conversion_rate DESC;
关键点:用 NULLIF(shots,0) 防止射门为 0 时除零错误。
PHP 计算并对比
function compareConversion(array $stats): array
{
$result = [];
foreach ($stats as $row) {
$shots = (int)$row['shots'];
$goals = (int)$row['goals'];
$result[] = [
'team' => $row['team'],
'shots' => $shots,
'goals' => $goals,
'rate' => $shots > 0 ? round($goals / $shots * 100, 1) : 0,
];
}
// 按转化率排序
usort($result, fn($a, $b) => $b['rate'] <=> $a['rate']);
// 算两队差异
if (count($result) === 2) {
$diff = round($result[0]['rate'] - $result[1]['rate'], 1);
} else {
$diff = null;
}
return ['teams' => $result, 'diff' => $diff];
}
展示差异的几种方式
| 方式 | 说明 |
|---|---|
| 绝对值差 | A队 25% vs B队 12%,差 13 个百分点 |
| 相对比值 | A队是B队的 2.1 倍 |
| 差值方向 | 主队更高 / 客队更高 |
| 可视化 | 用 Chart.js 画双柱状图对比 |
更专业的分析维度
单看转化率差异不够,建议补充:
- 射正率 = 射正 / 射门(先看射正再看转化)
- 预期进球 xG 对比:实际进球 - xG = 把握机会能力
- 样本量提醒:射门只有 2 次时转化率 50% 无意义,可加判断:
if ($shots < 5) $note = '样本过小,参考价值有限';
- 分时段:上半场 / 下半场转化率差异
常见坑
- 除零错误:必须
NULLIF或 PHP 里判 0 - 点球要不要算:点球命中率高,会虚增转化率,建议拆分
- 乌龙球:不计入射门但计入进球,需剔除
- 射门被挡:有些统计算射门,有些不统计
如果你把项目的表结构或相关 PHP 代码贴出来,我可以直接帮你改写成能用的查询和展示代码。
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播