无限分类 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;
}
posted @ 2021-05-20 14:39  青涩柠檬  阅读(84)  评论(0)    收藏  举报