当前位置:Gxlcms > PHP教程 > 获取左右值无限分类的路径关系

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

时间:2021-07-01 10:21:17 帮助过:17人阅读

最近需要一个可以显示类似
1 > 2
1 > 2 > 3
1 > 2 > 3 > 4
这样的玩意儿,自己不会算法,硬是走了很多弯路,当然希望各位有更好的方法,欢迎吐槽。
  1. public function getPaths($nodes)
  2. {
  3. $levels = $paths = array();
  4. // 重组数组层级
  5. foreach ($nodes as $id => $node)
  6. {
  7. $levels[$node['level']][$id] = $node;
  8. }
  9. for ($i = 0; $i < count($levels); $i++)
  10. {
  11. if (is_array($levels[$i]))
  12. {
  13. foreach ($levels[$i] as $level)
  14. {
  15. $id = $level['id'];
  16. $parent_id = $level['parent_id'];
  17. $parent = $paths[$parent_id];
  18. // 存在父级并取出附加到当前节点
  19. if ($parent)
  20. {
  21. $paths[$id] = $parent;
  22. $paths[$id][] = $level['id'];
  23. }
  24. else
  25. {
  26. $paths[$id][] = $level['id'];
  27. }
  28. }
  29. }
  30. }
  31. return $paths;
  32. }

人气教程排行