php中的递归函数存储结果而不使用静态
我编写了下面的递归函数来循环查找php中的递归函数存储结果而不使用静态,php,recursion,static,Php,Recursion,Static,我编写了下面的递归函数来循环查找$result->pages->next,并调用curl获取下一页并聚合结果。最后,它将所有结果作为单个对象返回 private function pager($result) { static $all_results; if(isset($result->pages->next) && !empty($result->pages->next)) { $a
$result->pages->next
,并调用curl获取下一页并聚合结果。最后,它将所有结果作为单个对象返回
private function pager($result) {
static $all_results;
if(isset($result->pages->next) && !empty($result->pages->next)) {
$all_results[] = $this->get_curl_request($result->pages->next);
$this->pager(end($all_results));
} else {
return $all_results;
}
}
然而,我真的不喜欢使用static
,它感觉实现得很差,而且是技术债务的来源。有什么更优雅的方法可以做到这一点
更新
private function pager($result, $all_results) {
if(isset($result->pages->next) && !empty($result->pages->next)) {
$all_results[] = $this->get_curl_request($result->pages->next);
return $this->pager(end($all_results), $all_results);
} else {
return $all_results;
}
}
被称为:
return $this->pager($this->get_curl_request("https://api/request/here"));
打开以更改其调用方式。尝试将
$all\u result
作为第二个参数,如下所示,并为此行添加返回:$this->pager(end($all\u results),$all\u results)代码>
代码
private function pager($result, $all_results) {
if(isset($result->pages->next) && !empty($result->pages->next)) {
$all_results[] = $this->get_curl_request($result->pages->next);
return $this->pager(end($all_results), $all_results);
} else {
return $all_results;
}
}
上述代码函数将返回上次更新的数组$all\u results
使用示例:
$pager_array = $this->pager($result, array());
您能否提供有关调用位置/方式的信息(第一次调用)?