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数据。非常接近,但这正是我所需要的。我想……)