最近需要一个可以显示类似1 > 21 > 2 > 31 > 2 > 3 > 4这样的玩意儿,自己不会算法,硬是走了很多弯路,当然希望各位有更好的方法,欢迎吐槽。 public function getPaths($nodes){$levels = $paths = array();// 重组数组层级 foreach ($nodes as $id => $node) { $levels[$node['level']][$id] = $node; } for ($i = 0; $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;}复制代码
09-15 12:37