递归完毕后,所有元素为同级目录:
//递归方法实现无限级分类
function getTree($list,$pid=0,$level=0) {
static $tree = array();
foreach($list as $row) {
if($row['pid']==$pid) {
$row['level'] = $level;
$tree[] = $row;
getTree($list, $row['auth_id'], $level + 1);
}
}
return $tree;
}
递归完毕后为N维数组:
/**
* 递归方法实现无限级分类
* @param array $param 要递归的数组
* @param string $id 主键
* @param string $pid 父主键
* @param string $tree 下属记录数组名
* @param string $root 根节点
* @return N维数组
*/
function getTree($param, $pk = 'id', $pid = 'pid', $child = 'tree', $root = 0)
{
$res = $packData = [];
foreach ($param as $data) {
$packData[$data[$pk]] = $data;
}
foreach ($packData as $key =>$val) {
if ($val[$pid] == $root) {
$res[] = & $packData[$key];
} else {
$packData[$val[$pid]][$child][] = & $packData[$key];
}
}
return $res;
}