从和Array-PHP递归查找所有子类别

从和Array-PHP递归查找所有子类别,php,recursion,Php,Recursion,我从数据库中获取了所有类别,就像这样 array 11 => object(stdClass)[19] public 'inv_category_id' => string '11' (length=2) public 'parent_category_id' => string '0' (length=2) public 'name' => string 'Innerwear' (length=9) publ

我从数据库中获取了所有类别,就像这样

array
  11 => 
    object(stdClass)[19]
      public 'inv_category_id' => string '11' (length=2)
      public 'parent_category_id' => string '0' (length=2)
      public 'name' => string 'Innerwear' (length=9)
      public 'level' => string '3' (length=1)

  40 => 
    object(stdClass)[20]
      public 'inv_category_id' => string '40' (length=2)
      public 'parent_category_id' => string '11' (length=2)
      public 'name' => string 'Dupattas, Scarves & Stoles' (length=26)
      public 'level' => string '3' (length=1)

  38 => 
    object(stdClass)[21]
      public 'inv_category_id' => string '38' (length=2)
      public 'parent_category_id' => string '11' (length=2)
      public 'name' => string 'Athletic Apparel' (length=16)
      public 'level' => string '3' (length=1)

  37 => 
    object(stdClass)[22]
      public 'inv_category_id' => string '37' (length=2)
      public 'parent_category_id' => string '38' (length=2)
      public 'name' => string 'Sweaters' (length=8)
      public 'level' => string '3' (length=1)
我有这个函数来查找类别ID为11的所有子类别

public function get_all_child_categories($cat_id) {

    global $all_categories_details;

    $all_child = array();

    foreach ($all_categories_details as $cat){

        if($cat->parent_category_id  ==  $cat_id){
            $all_child[] = $cat->inv_category_id;

            return self::get_all_child_categories($cat->inv_category_id);
        }
    }

   return $all_child;
}
我像这样调用这个函数
get_all_child_categories($parent_cat_id)(11)

我试过了

$all_child =  self::get_all_child_categories($cat->inv_category_id);

但它返回一个空数组


我想不出哪里出了错。

试试这个

public function get_all_child_categories($cat_id, $all_child = array()) {

global $all_categories_details;



foreach ($all_categories_details as $cat){

    if($cat->parent_category_id  ==  $cat_id){
        $all_child[] = $cat->inv_category_id;

        $all_child =  self::get_all_child_categories($cat->inv_category_id, $all_child);
    }
}

  return $all_child;
 }

这是因为数组中的元素是对象而不是数组。您可以在某处将对象转换为数组
$all\u child[]=$cat->inv\u category\u id我正在访问一个对象值,然后附加到该数组。。。没问题,我猜在
返回$all\u child之前尝试
var\u dump($all\u child)
公共函数中获取所有子类
public function get_all_child_categories($cat_id, $all_child = array()) {

global $all_categories_details;



foreach ($all_categories_details as $cat){

    if($cat->parent_category_id  ==  $cat_id){
        $all_child[] = $cat->inv_category_id;

        $all_child =  self::get_all_child_categories($cat->inv_category_id, $all_child);
    }
}

  return $all_child;
 }