<table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_50083"> 最近需要一个可以显示类似<br>1 > 2<br>1 > 2 > 3<br>1 > 2 > 3 > 4<br>这样的玩意儿,自己不会算法,硬是走了很多弯路,当然希望各位有更好的方法,欢迎吐槽。 <div class="blockcode"> <div id="code_et1"><ol> <li> public function getPaths($nodes)</li> <li> {</li> <li> $levels = $paths = array();</li> <li> // 重组数组层级</li> <li> foreach ($nodes as $id => $node)</li> <li> {</li> <li> $levels[$node['level']][$id] = $node;</li> <li> }</li> <li> for ($i = 0; $i < count($levels); $i )</li> <li> { </li> <li> if (is_array($levels[$i]))</li> <li> {</li> <li> foreach ($levels[$i] as $level)</li> <li> {</li> <li> $id = $level['id'];</li> <li> $parent_id = $level['parent_id'];</li> <li> $parent = $paths[$parent_id];</li> <li> // 存在父级并取出附加到当前节点</li> <li> if ($parent)</li> <li> {</li> <li> $paths[$id] = $parent;</li> <li> $paths[$id][] = $level['id'];</li> <li> } </li> <li> else</li> <li> {</li> <li> $paths[$id][] = $level['id'];</li> <li> }</li> <li> }</li> <li> }</li> <li> }</li> <li> return $paths;</li> <li> }</li> </ol></div> <em onclick="copycode($('code_et1'));">复制代码</em> </div> </td></tr></table> <div id="comment_50083" class="cm"> </div> <div id="post_rate_div_50083"></div> <br><br>