PHP-递归函数,用于查找任何给定父问题的父问题
我希望有人能帮上忙,这让我快发疯了 我有一个简单的递归PHP函数,用于将所有的父对象获取到类别列表的任何给定父对象。您只需将任何给定类别的父类别ID传递给它,它就会递归地获取树上更远的所有父类别PHP-递归函数,用于查找任何给定父问题的父问题,php,arrays,recursion,Php,Arrays,Recursion,我希望有人能帮上忙,这让我快发疯了 我有一个简单的递归PHP函数,用于将所有的父对象获取到类别列表的任何给定父对象。您只需将任何给定类别的父类别ID传递给它,它就会递归地获取树上更远的所有父类别 function getParentCategoriesById($parent_category_id,array $parents = []){ if(empty($parent_category_id)) { return []; } $parents[] = $parent_cate
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;}
假设category id=100有两个父级(33->37),如果我在返回之前转储$parents数组,结果是:
排列
(
[0] => 33
[1] => 37
)
排列
(
[0] => 33
)
返回的第一个数组是正确的结果,但我不明白函数是如何重新运行的,然后只返回第一个父数组。您应该在对
getParentCategoriesById()的内部调用中传递对$parents
的引用。
您没有对第二次调用的结果执行任何操作。数组本身没有被修改,你必须通过每个引用来实现。谢谢!谢谢,尽管由于我的PHP版本,我不得不支付函数定义中的引用:私有函数getParentCategoriesById($parent\u category\u id,array&$parents=[])也不需要返回这个数组。 Array ( [0] => 33 [1] => 37 ) Array ( [0] => 33 )
function getParentCategoriesById($parent_category_id, array &$parents = []) { ... }