这个php项目显示横传转移球次数?

wen PHP项目 1

PHP项目显示"横传转移球次数"的实现

您的问题比较简短,我需要先确认一下具体场景,不过我可以给您一个通用的实现方案。

这个php项目显示横传转移球次数?

理解需求

"横传转移球"通常出现在足球数据分析场景,指的是一次传球横向跨越球场(从左路到右路,或反之),也可能是篮球中的"横传球"。

常见统计口径:

  • 传球起点和终点的 X 坐标变化大(横向移动距离超过阈值)
  • 或者起终点分别在球场左右两侧区域

数据库设计示例

CREATE TABLE passes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    match_id INT,
    player_id INT,
    start_x DECIMAL(5,2),   -- 起点横坐标 (0-100)
    start_y DECIMAL(5,2),   -- 起点纵坐标
    end_x DECIMAL(5,2),     -- 终点横坐标
    end_y DECIMAL(5,2),     -- 终点纵坐标
    pass_time DATETIME,
    is_success TINYINT DEFAULT 1
);

核心统计逻辑(PHP)

<?php
// 横传转移球:横向距离 >= 30(即跨越约1/3球场宽度)
// 且纵向位移较小(说明是横向转移而非斜传)
function countCrossTransfers(PDO $pdo, int $matchId, int $minHorizontal = 30): int
{
    $sql = "SELECT COUNT(*) FROM passes
            WHERE match_id = :match_id
              AND is_success = 1
              AND ABS(end_x - start_x) >= :min_h
              AND ABS(end_y - start_y) < ABS(end_x - start_x)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        ':match_id' => $matchId,
        ':min_h'    => $minHorizontal,
    ]);
    return (int)$stmt->fetchColumn();
}
// 使用
$pdo = new PDO('mysql:host=localhost;dbname=football;charset=utf8mb4', 'user', 'pass');
echo "横传转移球次数: " . countCrossTransfers($pdo, 1001);

或者在 PHP 中处理数组数据

如果数据来自 API 或 JSON:

$passes = json_decode(file_get_contents('passes.json'), true);
$count = 0;
foreach ($passes as $p) {
    $dx = abs($p['end_x'] - $p['start_x']);
    $dy = abs($p['end_y'] - $p['start_y']);
    // 横向位移 ≥ 30 且横向大于纵向
    if ($dx >= 30 && $dx > $dy && $p['is_success']) {
        $count++;
    }
}
echo "横传转移球次数: {$count}";

显示在页面上

<div class="stat">
    <span class="label">横传转移球</span>
    <span class="value"><?= $count ?> 次</span>
</div>

需要您补充的信息

为了给您更精准的代码,请告诉我:

  1. 这是足球、篮球还是其他项目? 判定标准不同
  2. 数据从哪里来? 数据库 / API / Excel / JSON / 手工输入?
  3. "横传转移"的判定规则是什么? 是否有明确定义(阈值、区域)?
  4. 是要写一个完整项目,还是在现有项目里加一个统计模块?
  5. 用的框架是什么? 原生 PHP / ThinkPHP / Laravel?

提供这些信息后,我可以给出完整可运行的代码。

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