php中構建樹狀圖


   /**
     *  指定根層級的樹狀圖
     * @param array $list 初始數組
     * @param int $root 最上級一條數據的id
     * @param string $pk 每一條數據的id
     * @param string $pid 上下級關系的pid
     * @param string $child 自定義下級關系的字段
     * @return  array $tree  樹狀圖數組
     */

    function generateTree($list, $root = 0, $pk = 'id', $pid = 'pid', $child = '_child')
    {
        $tree = array();
        $packData = array();
        foreach ($list as $data) {
            $packData[$data[$pk]] = $data;
        }
        foreach ($packData as $key => $val) {
            if ($val[$pid] == $root) {
//代表跟節點, 重點一
                $tree[] = &$packData[$key];
            } else {
                //找到其父類,重點二
                $packData[$val[$pid]][$child][] = &$packData[$key];
            }
        }
        return $tree;
    }

 獲取無限極的層級,

public static function getTree($data, $pid, $level = 0)
    {
        $list = array();
        foreach ($data as $k => $v) {
            if ($v['parent_id'] == $pid) {
                $v['level'] = $level;
                $v['name'] ='| — —' . str_repeat('| — —', $level) . $v['name'];// 這里可以加個層級次數 //一個層級增加一維數組 
// $v['children'] = self::getTree($data, $v['id'], $level + 1);
$list[] = $v;
                //構建二級數組
                $list = array_merge(self::getTree($data, $v['id'], $level + 1), $list);
} } return $list; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM