龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

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

时间:2014-11-10 03:08来源:网络整理 作者:网络 点击:
分享到:
获取左右值无限分类的路径关系 最近需要一个可以显示类似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
精彩图集

赞助商链接