递归算法
我只是在这里记录一下,只是给我自己看而已,大家就不必纠结了“
算法一:
/** * 将栏目按照等级关系排序,用level来区分 * @param $data 数据源 * @param int $id * @param int $level 等级 * @return array */ function setSort($data,$id=0,$level=0) { static $arr = array(); foreach ($data as $k => $v) { if ($v['pid'] == $id) { $v['level'] = $level+1; $arr[] = $v; setSort($data,$v['id'],$level); } } return $arr; }
算法二:
/** * 将栏目按照等级关系排序,子栏目归类到顶级栏目的children下面 * @param $data 数据源 * @param int $id * @return array */ function setSortChildren($data,$id=0) { $arr = array(); foreach ($data as $k => &$v) { if ($v['pid'] == $id) { $v['children'] = setSortChildren($data,$v['id']); $arr[] = $v; } } return $arr; }
算法二前:
算法二后: