PHP如何组合两个API调用 循环获取赛事及对应预测数据
遍历赛事数组配对请求预测接口实现方案
核心逻辑是在已有的foreach赛事遍历循环内,直接获取当前循环的赛事ID发起预测接口请求,解析结果后和当前赛事数据绑定输出,保证顺序一一对应。
实现步骤
- 从当前遍历的赛事单元中提取
fixtureID,替换预测接口请求路径中的{fixtureID}占位符 - 复用cURL句柄发起请求,避免重复初始化句柄带来的性能损耗
- 对预测接口返回的JSON做格式校验,避免接口异常导致整体脚本中断
- 提取
predictions节点下需要的获胜方ID、获胜方名称、预测备注字段,和当前赛事数据按顺序配对输出
完整可参考代码
<?php // --------------- 以下为你已实现的前置逻辑,无需修改 --------------- // 1. 赛事接口cURL请求、json_decode解析得到$fixtures数组的逻辑保留 // ---------------------------------------------------------------- // 循环外初始化cURL句柄,复用提升性能 $predictionCh = curl_init(); curl_setopt($predictionCh, CURLOPT_RETURNTRANSFER, true); curl_setopt($predictionCh, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($predictionCh, CURLOPT_HTTPHEADER, [ // 替换为你自己预测接口需要的请求头,比如Authorization鉴权头 'Accept: application/json' ]); // 你原有遍历$fixtures的循环逻辑 foreach ($fixtures as $fx) { $currentFixtureId = $fx['fixture']['id']; // --------------- 你原有输出赛事信息的逻辑保留 --------------- // 例:echo "赛事:".$fx['teams']['home']['name']." vs ".$fx['teams']['away']['name'].PHP_EOL; // ---------------------------------------------------------- // ------------------- 补全的预测请求逻辑 ------------------- // 拼接当前赛事对应的预测接口地址,替换占位符 $apiUrl = "你的预测接口端点路径/{$currentFixtureId}"; curl_setopt($predictionCh, CURLOPT_URL, $apiUrl); // 发起请求 $response = curl_exec($predictionCh); // 异常捕获 if (curl_errno($predictionCh)) { echo "赛事ID[{$currentFixtureId}]预测请求失败:".curl_error($predictionCh).PHP_EOL; continue; } // 解析响应为关联数组,和赛事接口解析参数保持一致 $prediction = json_decode($response, true); // 结构校验 if (!isset($prediction['predictions']['winner'], $prediction['predictions']['comment'])) { echo "赛事ID[{$currentFixtureId}]预测返回格式异常".PHP_EOL; continue; } // 提取目标字段 $winnerId = $prediction['predictions']['winner']['id']; $winnerName = $prediction['predictions']['winner']['name']; $comment = $prediction['predictions']['comment']; // 配对输出预测结果,和前面的赛事信息一一对应 echo "=== 对应赛事预测结果 ===".PHP_EOL; echo "预测获胜方ID:{$winnerId}".PHP_EOL; echo "预测获胜方名称:{$winnerName}".PHP_EOL; echo "预测备注:{$comment}".PHP_EOL; echo PHP_EOL; } // 循环结束关闭cURL句柄 curl_close($predictionCh); ?>
注意事项:如果你的预测接口支持批量传入多个fixtureID返回对应预测结果,优先使用批量接口,相比循环单次请求可以大幅降低接口请求总耗时,避免触发接口频率限制。
内容的提问来源于stack exchange,提问作者Daniel Omara
相关产品推荐
相关产品推荐

