关键词搜索

源码搜索 ×
×

PHP实现多级分类生成树的方法

发布2021-01-25浏览508次

详情内容

PHP无限级分类生成树:

/**
 * 生成树
 * @param $items
 * @return array
 */
function generateTree($items){
    $tree = array();
    foreach($items as $item){
         if(isset($items[$item['pid']])){
             $items[$item['pid']]['son'][] = &$items[$item['id']];
        } else {
            $tree[] = &$items[$item['id']];
        }
    }
    return $tree;
}

$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
    4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),
    5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
);

print_r(generateTree($items));

    执行效果:

    Array
    (
        [0] => Array
            (
                [id] => 1
                [pid] => 0
                [name] => 安徽省
                [son] => Array
                    (
                        [0] => Array
                            (
                                [id] => 3
                                [pid] => 1
                                [name] => 合肥市
                                [son] => Array
                                    (
                                        [0] => Array
                                            (
                                                [id] => 4
                                                [pid] => 3
                                                [name] => 长丰县
                                            )
    
                                    )
    
                            )
    
                        [1] => Array
                            (
                                [id] => 5
                                [pid] => 1
                                [name] => 安庆市
                            )
    
                    )
    
            )
    
        [1] => Array
            (
                [id] => 2
                [pid] => 0
                [name] => 浙江省
            )
    
    )
    
      27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    上面生成树的方法可精简为如下代码:

    /**
     * 生成树
     * @param $items
     * @return array|mixed
     */
    function generateTree2($items) {
      foreach($items as $item)
      $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
      return isset($items[0]['son']) ? $items[0]['son'] : array();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    原文地址:
    https://www.jb51.net/article/65840.htm

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载