Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 递归地添加到数组中_Php_Wordpress - Fatal编程技术网

Php 递归地添加到数组中

Php 递归地添加到数组中,php,wordpress,Php,Wordpress,我正在努力理解递归的一个问题,在这个问题上,我只沿着一个方向遍历一个层次结构,并将每个父级的所有子级添加到一个数组中 然而,在使用递归的同时,我还不能找到一种最好的方法来不断地添加到这个数组中 到目前为止,我的函数是这样的。如果有人能把我推向正确的方向,我将不胜感激 function getTaxChildrenList($cat, $data){ $next = get_terms('location_types', 'orderby=count&hide_empty=0&a

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

然而,在使用递归的同时,我还不能找到一种最好的方法来不断地添加到这个数组中

到目前为止,我的函数是这样的。如果有人能把我推向正确的方向,我将不胜感激

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;

}   
我现在得到了我想要的返回结构,但是需要实际地将这些子对象添加到键中,我猜这可能是我的基本情况

屏幕截图->

这应该可以完成这项工作

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;
} 

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

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;

}   

是这样的吗?

调用中的第二个参数是
$this->getTaxChildrenList($next\u level->term\u id)?您需要传递结果以“添加”结果,而不是替换…递归函数必须具有基本情况。这里的基本情况是什么?目前,$result将始终为空。JLRishe我认为你是对的。基本情况将只是添加到数组中并返回我猜…?您到底想做什么?是否将所有值添加到一个数组?或者让一个数组包含值和其他数组?检查我刚才添加的屏幕截图。你的表现和我大致相同,这很好。我需要做的是将存储在$next_level的对象也添加到数组中,这样每个级别不仅仅是空的。因此,每个term_id而不是键中带有term_id的空数组实际上会存储相关term_id数据。非常接近,但这正是我所需要的。我想……)