誰かが助けてくれることを願っています。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)を持っている私はちょうど戻る前に$両親配列をダンプた場合、結果があるとしましょう:
Array ( [0] => 33 [1] => 37 )
Array ( [0] => 33 )
返された最初の配列は正しい結果ですが、関数がどのように再実行されているのかわかりません。最初の親だけが返されます。
に内部呼び出しで
$parents
への参照を渡す必要があります。配列自体は変更されていないので、それが起こるには参照ごとに渡す必要があります。 – CBroeありがとう!それがトリックでした。 –