本文目录导读:

我需要更多信息才能帮您解决这个问题,您提到的"PHP项目显示人盯人防守成功率"这个需求,需要明确以下几点:
需要澄清的信息
-
数据来源
- 防守数据存储在数据库(MySQL/PostgreSQL?)
- 还是通过API获取(体育数据接口如Sportradar、Opta等)
- 还是Excel/CSV导入
-
"人盯人防守成功率"的计算逻辑 通常公式为:
成功率 = 成功盯防次数 / 总盯防次数 × 100%但"成功"的判定标准是什么?
- 对手未接球?
- 对手未得分?
- 抢断/干扰成功?
-
技术栈
- PHP框架(Laravel/ThinkPHP/原生?)
- 前端(Blade/Vue/React?)
- 图表库(ECharts/Chart.js?)
一个通用的实现示例
假设使用 Laravel + MySQL + ECharts,基础结构如下:
数据库表设计
CREATE TABLE man_marking_stats (
id INT PRIMARY KEY AUTO_INCREMENT,
player_id INT NOT NULL,
match_id INT NOT NULL,
total_marking INT DEFAULT 0, -- 总盯防次数
successful_marking INT DEFAULT 0, -- 成功次数
match_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
模型 (app/Models/ManMarkingStat.php)
class ManMarkingStat extends Model
{
protected $table = 'man_marking_stats';
protected $fillable = ['player_id','match_id','total_marking','successful_marking','match_date'];
// 计算成功率访问器
public function getSuccessRateAttribute()
{
if ($this->total_marking == 0) return 0;
return round(($this->successful_marking / $this->total_marking) * 100, 2);
}
}
控制器
public function index(Request $request)
{
$playerId = $request->input('player_id');
$stats = ManMarkingStat::where('player_id', $playerId)
->orderBy('match_date', 'desc')
->get()
->map(function($item) {
return [
'date' => $item->match_date,
'success_rate' => $item->success_rate,
'total' => $item->total_marking,
'success' => $item->successful_marking,
];
});
// 综合成功率
$total = $stats->sum('total');
$success = $stats->sum('success');
$overallRate = $total > 0 ? round(($success / $total) * 100, 2) : 0;
return view('man_marking.index', compact('stats', 'overallRate'));
}
视图 (Blade + ECharts)
<div class="card">
<h3>人盯人防守成功率</h3>
<div class="big-number">{{ $overallRate }}%</div>
<div id="chart" style="width:100%;height:400px;"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
<script>
const chart = echarts.init(document.getElementById('chart'));
chart.setOption({
xAxis: { type: 'category', data: @json($stats->pluck('date')) },
yAxis: { type: 'value', max: 100, name: '成功率(%)' },
series: [{
type: 'line',
data: @json($stats->pluck('success_rate')),
smooth: true,
areaStyle: {}
}]
});
</script>
请告诉我
- 您的现有项目结构是什么?(框架、数据库表)
- 具体的业务规则(成功判定标准)
- 报错信息或期望效果是什么?
提供这些信息后,我可以给出更精准的代码。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播