php 获取左右值无限分类的路径关系
获取左右值无限分类的路径关系 最近需要一个可以显示类似1 gt; 21 gt; 2 gt; 31 gt; 2 gt; 3 gt; 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;
}
//该片段来自于http://outofmemory.cn
精彩图集
精彩文章






