我希望有人能提供帮助,这让我发疯!
我有一个简单的递归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 = []) { ... }