PHP - 用于查找任何给定父级父项的递归函数 - 问题

时间:2017-09-06 10:36:22

标签: php arrays recursion

我希望有人可以提供帮助,这让我发疯了!

我有一个简单的递归PHP函数,可以让所有父级访问任何给定的父级以获取类别列表。您只需将任何给定类别的父类别ID传递给它,它将以递归方式将所有父项传递给树。

function getParentCategoriesById($parent_category_id,array $parents = []){

if(empty($parent_category_id)) {
    return [];
}

$parents[] = $parent_category_id;

$parent_category = DB::builder()->table('product_categories')->find($parent_category_id);

if(!empty($parent_category->parent)) {
    getParentCategoriesById($parent_category->parent,$parents);
}

return $parents;}

让我们说类别id = 100有2个父母(33-> 37),如果我在返回之前转储$ parents数组,结果是:

Array
(
    [0] => 33
    [1] => 37
)
Array
(
    [0] => 33
)

返回的第一个数组是正确的结果,但我不明白该函数是如何重新运行的,而是只返回第一个父项。

1 个答案:

答案 0 :(得分:3)

您应该在对$parents

的内部通话中将getParentCategoriesById()的引用传递给我们
function getParentCategoriesById($parent_category_id, array &$parents = []) { ... }