美文网首页
PHP实现无限级分类

PHP实现无限级分类

作者: jeferwang | 来源:发表于2017-05-13 15:30 被阅读0次

    数据格式:

    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

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

    相关文章

      网友评论

          本文标题:PHP实现无限级分类

          本文链接:https://www.haomeiwen.com/subject/gibxxxtx.html