如何在递归函数中将数据存储在数组中

时间:2016-02-10 09:00:54

标签: php arrays recursion

我已经创建了一个递归函数,我希望每次调用函数时都将它返回的数据添加到数组中。

这是我目前的实施:

public function getParentCategory($categoryId) {   
    $category = Category::find($categoryId);
    if($category != NULL){
        $catArray[]  = $category->id;
        if($category->parent_category_id != NULL) {
            $this->getParentCategory($category->parent_category_id);
        }
    }
}

我想在每次调用函数时将数据存储在catArray中。

1 个答案:

答案 0 :(得分:0)

您只需从函数返回数据即可。您还需要传递给函数,或使用默认参数:

public function getParentCategory($categoryId, $catArray = array()) {   
    $category = Category::find($categoryId);
    if ($category != NULL){
        $catArray[]  = $category->id;
        if ($category->parent_category_id != NULL){
            $catArray = $this->getParentCategory($category->parent_category_id, $catArray);
        }
    }
    return $catArray;
}

您可以使用array_unshift()而不是$catArray[]=以相反的顺序拥有$catArray(和/或在之后添加$category->id 递归)。