不用递归实现无限级分类

适用于 id,pid,name 的表结构。

原理: php引用。

直接上代码:

public  function getTree($arr)
{
    $items = [];
    foreach ($arr as $v)
    {
      $items[ $v['id'] ] = $v;
    }

    $tree = [];
    foreach ($items as $item)
    {

      if( isset($items[$item['pid']]) ){

        $items[ $item['pid'] ]['children'][] = &$items[$item['id']];

      }else{

        $tree[] = &$items[$item['id']];

      }

    }

    return $tree;
}

数据格式:

Array
(
    [0] => Array
        (
            [id] => 114
            [name] => 一级分类
            [pid] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 125
                            [name] => 二级分类
                            [pid] => 114
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 171
                                            [name] => 三级分类
                                            [pid] => 125
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [id] => 126
                            [name] => 二级分类
                            [pid] => 114
                        )
                )

        )

    [1] => Array
    (
        ...省略
    )

    ...省略
)
php
本作品采用《CC 协议》,转载必须注明作者和本文链接
welcome come back
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
95
粉丝
24
喜欢
156
收藏
348
排名:324
访问:2.9 万
私信
所有博文
社区赞助商