贡献一个无限极分类

jerry thinkphp 2015年11月19日 收藏
贡献一个无限极分类
/**
* 将数据格式化成树形结构
* @param array $items
* @return array 
*/
function genTree($items,$id='id',$pid='uid',$son = 'son'){
$tree = array(); //格式化的树
$tmpMap = array(); //临时扁平数据
foreach ($items as $item) {
$tmpMap[$item[$id]] = $item;
}
foreach ($items as $item) {
if (isset($tmpMap[$item[$pid]]) && $item[$id] != $item[$pid]) {
if (!isset($tmpMap[$item[$pid]][$son]))
$tmpMap[$item[$pid]][$son] = array();
$tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
} else {
$tree[] = &$tmpMap[$item[$id]];
}
}
return $tree;
}