龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

获取左右值无限分类的路径关系

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
最近需要一个可以显示类似1 21 2 31 2 3 4这样的玩意儿,自己不会算法,硬是走了很多弯路,当然希望各位有更好的方法,欢迎吐槽。
最近需要一个可以显示类似
1 > 2
1 > 2 > 3
1 > 2 > 3 > 4
这样的玩意儿,自己不会算法,硬是走了很多弯路,当然希望各位有更好的方法,欢迎吐槽。
	public function getPaths($nodes)
	{
		$levels = $paths = array();
		// 重组数组层级
        foreach ($nodes as $id => $node)
        {
            $levels[$node['level']][$id] = $node;
        }
        for ($i = 0; $i < count($levels); $i++)
        { 
            if (is_array($levels[$i]))
            {
                foreach ($levels[$i] as $level)
                {
                    $id        = $level['id'];
                    $parent_id = $level['parent_id'];
                    $parent    = $paths[$parent_id];
                    // 存在父级并取出附加到当前节点
                    if ($parent)
                    {
                        $paths[$id] = $parent;
                        $paths[$id][] = $level['id'];
                    } 
                    else
                    {
                        $paths[$id][] = $level['id'];
                    }
                }
            }
        }
        return $paths;
	}
精彩图集

赞助商链接