在 PHP 项目中查看"半场结束前攻势"的分析方法
由于你没有提供具体项目代码,我先给出通用的分析思路,你可以对照自己的项目结构来定位。

先明确"半场结束前攻势"的数据定义
通常需要几个要素:
| 要素 | 说明 |
|---|---|
| 半场时间点 | 上半场第 45 分钟、下半场第 90 分钟(或补时) |
| "结束前"窗口 | 常见是 40-45 分钟、85-90 分钟 |
| 攻势指标 | 射门、角球、危险进攻、控球、传球进入前场等 |
| 时间归属 | 事件发生在哪个半场 |
常见数据表结构(SQL 视角)
假设你的 MySQL 表类似:
-- 比赛事件表 match_events ( id, match_id, minute, half, -- half: 1/2 event_type, -- shot/corner/attack/danger_attack team_id, ... )
SQL 查询:半场结束前攻势
上半场最后 5 分钟(40'-45')的攻势
SELECT team_id,
COUNT(*) AS attack_count
FROM match_events
WHERE match_id = ?
AND half = 1
AND minute BETWEEN 40 AND 45
AND event_type IN ('shot','corner','danger_attack')
GROUP BY team_id;
下半场结束前(85'-90'+)
SELECT team_id, COUNT(*) AS attack_count
FROM match_events
WHERE match_id = ?
AND half = 2
AND minute >= 85
AND event_type IN ('shot','corner','danger_attack')
GROUP BY team_id;
半场划分(含补时)
-- 上半场:minute <= 45(含 45+) -- 下半场:minute > 45 CASE WHEN minute <= 45 THEN 1 ELSE 2 END AS half
PHP 侧实现思路
// 1. 取该场比赛所有事件
$events = $db->query("SELECT * FROM match_events WHERE match_id = ?", [$matchId]);
// 2. 按半场 + 时间段筛选
$firstHalfEnd = array_filter($events, function($e) {
return $e['half'] == 1 && $e['minute'] >= 40 && $e['minute'] <= 45;
});
// 3. 按球队聚合
$stats = [];
foreach ($firstHalfEnd as $e) {
if (in_array($e['event_type'], ['shot','corner','danger_attack'])) {
$stats[$e['team_id']] = ($stats[$e['team_id']] ?? 0) + 1;
}
}
如果你用的是这些框架/项目
请告诉我具体是哪种,我可以给出更精准的代码:
- Laravel:查
app/Models/Match*.php、app/Services/里的统计服务 - ThinkPHP:查
application/下的控制器和模型 - 自研 SDK / API 采集:查
cron/或command/里的拉取任务 - 已知第三方数据源(如雷速、球探、nowgoal 等):看采集字段名
给我更多信息我可以直接帮你改代码
请提供其中任意一项,我就能给出针对你项目的具体查询/函数:
- 相关表结构(
SHOW CREATE TABLE match_events;) - 你项目里统计类文件的片段(如
StatsService.php) - 你说的"看攻势"是想展示在页面还是后台跑数据?
- 项目是自研采集还是对接了某个数据 API?
你把代码或表结构贴出来,我直接帮你写查询和 PHP 处理逻辑。