PHP 项目如何获取一场比赛的进球总数
要看你说的"这场比赛"是什么场景,常见有几种情况:

如果是自己项目里的数据库数据
假设你有 matches 和 goals 表:
// 方法一:直接查字段
$stmt = $pdo->prepare("SELECT goal_total FROM matches WHERE id = ?");
$stmt->execute([$matchId]);
$total = $stmt->fetchColumn();
// 方法二:统计进球记录
$stmt = $pdo->prepare("SELECT COUNT(*) FROM goals WHERE match_id = ?");
$stmt->execute([$matchId]);
$total = $stmt->fetchColumn();
// 方法三:按主客队分别统计
$sql = "SELECT
SUM(CASE WHEN team_id = home_team_id THEN 1 ELSE 0 END) AS home_goals,
SUM(CASE WHEN team_id = away_team_id THEN 1 ELSE 0 END) AS away_goals
FROM goals WHERE match_id = ?";
如果是通过第三方 API 获取
常见足球数据 API:
// 以 api-football 为例
$apiKey = 'YOUR_API_KEY';
$fixtureId = 123456;
$ch = curl_init("https://v3.football.api-sports.io/fixtures?id={$fixtureId}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"x-apisports-key: {$apiKey}"
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
$goals = $data['response'][0]['goals'];
$total = $goals['home'] + $goals['away'];
echo "总进球数:{$total}";
常用的 API 服务:
- API-Football (api-sports.io)
- Football-Data.org(有免费额度)
- SportMonks
- TheSportsDB(免费)
如果是爬取网页
用 Guzzle + DOMDocument / symfony/dom-crawler:
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
$client = new Client();
$html = $client->get($url)->getBody()->getContents();
$crawler = new Crawler($html);
$homeGoals = (int) $crawler->filter('.home-score')->text();
$awayGoals = (int) $crawler->filter('.away-score')->text();
$total = $homeGoals + $awayGoals;
请补充信息
我需要知道更多细节才能给更准确的代码:
- 数据来源:自己的数据库?第三方 API?网页?
- PHP 框架:Laravel / ThinkPHP / 原生?
- "这场比赛" 具体指哪场,URL 或接口方便发一下吗?
- 是足球、篮球还是其他?"进球"在不同项目里统计维度不同。
告诉我这些我可以给你能直接跑的完整代码。