递归
/**
* 数组转树状构造
* @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;
}
发表回复