无限分类 tree结构生成 -迭代法
无限分类 tree结构生成
/**
* 生成项目树
* @param $projects
* @param string $idKey
* @param string $pidKey
* @return array
*/
function makeTree($projects, $idKey = 'id', $pidKey = 'pid')
{
$refer = array();
$tree = array();
//创建主键的数组引用
foreach ($projects as $k => $v) {
$refer[$v[$idKey]] = &$projects[$k];
}
foreach ($projects as $k => $v) {
//获取当前分类的父级id
$pid = $v[$pidKey];
if (isset($refer[$pid])) {
//如果存在父级栏目,则添加进父级栏目的子栏目数组中
$refer[$pid]['children'][] = &$projects[$k];
} else {
$tree[] = &$projects[$k]; //顶级栏目
}
}
return $tree;
}

浙公网安备 33010602011771号