共计 709 个字符,预计需要花费 2 分钟才能阅读完成。
递归
/**
* 数组转树状构造
* @param arr $list 要转换的数据
* @param int $pid 父级 ID
* @param str $pid_field 父级字段名
* @param str $id_field 主键名
*/
function getTree($list, $pid=0, $pid_field='pid', $id_field='id'){$result=[];
foreach ($list as $k => $v) {if($list[$k][$pid_field] == $pid){unset($list[$k]);
$children = getTree($list,$v[$id_field]);
if($children){$v['children'] = $children;
}
$result[]=$v;}
}
return $result;
}
援用
/**
* 数组转树状构造
* @param arr $list 要转换的数据
* @param str $pid_field 父级字段名
* @param str $id_field 主键名
*/
function getTree($list, $pid_field='pid', $id_field='id'){$items=[];
foreach ($list as $k => $v) {$items[$v[$id_field]]=$v;
}
$tree=[];
foreach ($items as $k => $v) {if(isset($items[$v[$pid_field]])){$items[$v[$pid_field]]['children'][]=&$items[$k];
}else{$tree[]=&$items[$k];
}
}
return $tree;
}
正文完