【发布时间】:2017-09-06 10:36:21
【问题描述】:
希望有人能帮忙,这让我发疯了!
我有一个简单的递归 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 数组,结果是:
数组
(
[0] => 33
[1] => 37
)
数组
(
[0] => 33
)
返回的第一个数组是正确的结果,但我不明白函数是如何重新运行的,然后只返回第一个父级。
【问题讨论】:
-
您没有对第二次
getParentCategoriesById调用的结果做任何事情。并且数组本身没有被修改,你必须通过每个引用传递它才能发生。 -
谢谢!成功了。