递归添加到数组

时间:2013-07-18 07:57:07

标签: php wordpress

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

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

这是我的功能到目前为止的样子。如果有人能用这个推动我朝着正确的方向发展,我会非常感激。

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

2 个答案:

答案 0 :(得分: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;
} 

答案 1 :(得分: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;

}   

是这样的吗?