我正在foreach循环中对soccer api进行此调用,以返回每次比赛的比赛。 如果此调用在foreach循环之外,则效果很好。 在foreach中,我仅获得第一个竞赛数组,但未重置该数组!它一直为第一个循环返回相同的结果,我试图取消设置变量,但这似乎不起作用。有什么主意吗?
foreach($comps as $comp){
$comp_api = $comp->comp_id;
$from_date = new datetime($start_date);
$to_date = new datetime($end_date);
$matches_setup = ['query' => ['leagues' => $comp_id]];
#loop matches
$matches = array();
do {
$matches = array_merge($matches, $api->fixtures()->between()->period($from_date, $to_date, null, $matches_setup));
} while ($monk_framework->fixtures()->nextPage($matches_setup));
$results = $matches;
/*
* part where data is inserted to db
*/
}
该怎么办?还是这可能是api的问题?
答案 0 :(得分:1)
您似乎正在每个循环上重置结果。
您应该在每次迭代后附加结果:
$results = [];
foreach($comps as $comp){
$from_date = new datetime($start_date);
$to_date = new datetime($end_date);
$matches_setup = [
'query' => [
'leagues' => $comp_id
]
];
#loop matches
$matches = array();
while ($api->fixtures()->nextPage($matches_setup)) {
$matches = array_merge($matches, $api->fixtures()->between()->period($from_date, $to_date, null, $matches_setup));
}
$results = array_merge($results, $matches);
}
答案 1 :(得分:0)
我找到了解决方案,并找出了问题所在。
while ($monk_framework->fixtures()->nextPage($matches_setup));
此部分的nextPage参数在每次循环后都不会重置,这是我正在使用的api中的miss配置。在每个循环之后重置参数有助于解决我的问题。
#reset params for next call
self::$param = array();
对于可能在同一framework of sportmonks上偶然发现此问题的任何人,此处为full details。