我只是在这里记录一下,只是给我自己看而已,大家就不必纠结了“
算法一:
/**
* 将栏目按照等级关系排序,用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;
}
算法二前:
算法二后: