PHP-递归功能,以找到任何给定父母的父母 - 问题



我希望有人能提供帮助,这让我发疯!

我有一个简单的递归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),如果我在返回之前丢弃$父母数组,结果为:

数组((    [0] => 33    [1] => 37)
数组((    [0] => 33)

返回的第一个数组是正确的结果,但我不明白该功能是如何重新运行的,然后仅返回第一个父。

您应该将引用到getParentCategoriesById()中的$parents

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

最新更新