0

我正在努力理解我在递归中遇到的一个问题,我只在一个方向上遍历一个层次结构并将每个父级的所有子级添加到一个数组中。

但是,我无法找到在使用递归时不断添加到该数组的最佳方法。

这是我的功能到目前为止的样子。如果有人能以此推动我朝着正确的方向前进,我将不胜感激。

function getTaxChildrenList($cat, $data){

    $next = get_terms('location_types', 'orderby=count&hide_empty=0&parent='.$cat);

    if(count($next)){
        $result = array();
        foreach($next as $next_key => $next_level){
            $result[$next_level->term_id] = $this->getTaxChildrenList($next_level->term_id, $result);
        }
    }

    return $result;

}   

我现在可以根据需要返回结构,但需要将每个孩子的对象实际添加到我猜可能是我的基本情况的键中。

截图-> http://cl.ly/image/1z1v2S243f3H

4

2 回答 2

0

这应该做的工作

function getTaxChildrenList($cat) { //no second parameter
  $next = get_terms('location_types', 'orderby=count&hide_empty=0&parent='.$cat);
  $result = array();
  //base case would be count($next) == 0
  if(count($next)){
    foreach($next as $next_level){
      //add recursively arrays
      $recur = $this->getTaxChildrenList($next_level->term_id);
      if(count($recur) == 0)
        $result[$next_level->term_id] = $next_level;
      else
        $result[$next_level->term_id] = $recur;
    }
  }
  return $result;
} 
于 2013-07-18T08:13:57.400 回答
0

所以也许你需要这样的东西:

function getTaxChildrenList($cat){

    $next = get_terms('location_types', 'orderby=count&hide_empty=0&parent='.$cat);

    $result = array();
    if(count($next)){
        foreach($next as $next_key => $next_level){
            $result[$next_level->term_id] = 
                 array("data" => $next_level->something,
                       "children" => $this->getTaxChildrenList($next_level->term_id));
        }
    }

    return $result;

}   

是这样的吗?

于 2013-07-18T08:20:55.840 回答