Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的递归函数存储结果而不使用静态_Php_Recursion_Static - Fatal编程技术网

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());

您能否提供有关调用位置/方式的信息(第一次调用)?