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
精彩图集
精彩文章