PHP实现无限级分类

数据格式:

array (size=5)
  1 => 
    array (size=6)
      'id' => string '1' (length=1)
      'pid' => string '0' (length=1)
      'name' => string '青年之声1' (length=13)
      'description' => string '' (length=0)
      'create_time' => string '2017-04-02 15:38:06' (length=19)
      'del' => string '0' (length=1)
  2 => 
    array (size=6)
      'id' => string '2' (length=1)
      'pid' => string '1' (length=1)
      'name' => string '青年之声2' (length=13)
      'description' => string '' (length=0)
      'create_time' => string '2017-04-02 15:38:06' (length=19)
      'del' => string '0' (length=1)
  3 => 
    array (size=6)
      'id' => string '3' (length=1)
      'pid' => string '2' (length=1)
      'name' => string '青年之声3' (length=13)
      'description' => string '' (length=0)
      'create_time' => string '2017-04-02 15:38:06' (length=19)
      'del' => string '0' (length=1)
  4 => 
    array (size=6)
      'id' => string '4' (length=1)
      'pid' => string '3' (length=1)
      'name' => string '青年之声4' (length=13)
      'description' => string '' (length=0)
      'create_time' => string '2017-04-02 15:38:06' (length=19)
      'del' => string '0' (length=1)
  5 => 
    array (size=6)
      'id' => string '5' (length=1)
      'pid' => string '4' (length=1)
      'name' => string '青年之声5' (length=13)
      'description' => string '' (length=0)
      'create_time' => string '2017-04-02 15:38:06' (length=19)
      'del' => string '0' (length=1)

非递归算法

$tree = array();
foreach ($items as $item) {
    if (isset($items[$item['pid']])) {
        $items[$item['pid']]['childs'][] = &$items[$item['id']];
    } else {
        $tree[] = &$items[$item['id']];
    }
}

递归算法

function getChild($id) {
    $tree = [];
    $childs = Columns::find()->where(['pid' => $id, 'del' => 0])->asArray()->all();
    if ($childs) {
        foreach ($childs as $child) {
            $childTree = getChild($child['id']);
            if ($childTree) {
                $child['children'] = $childTree;
            }
            $tree[] = $child;
        }
    }
    return $tree;
}

最终结果

Paste_Image.png

原创作品,允许转载,转载时请务必以超链接形式标明原始出处、作者信息和本声明,否则后果自负。
如果你觉得这篇文章对你有帮助或启发,可直接留言和我沟通

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容