PHP通过传引用的思想实现无限分类的方法

在我的Simpla中,用到了无限分类,使用了PHP的传引用思想实现无限分类的方法,可以完美展示类似这样的分类模式。

具体实现代码如下:如有错误或者更好的方法,希望可以相互交流。

id   pid   name
1    0     四川
2    0     重庆
3    1     成都
4    1     绵阳
5    3     高新区
/**
     * 数组变成无限级分类--传引用思想
     * @param array $items
     * @return array
     */
    public static function get_tree($orig) {
        //解决下标不是1开始的问题
        $items = array();
        foreach ($orig as $key => $value) {
            $items[$value['id']] = $value;
        }
        //开始组装
        $tree = array();
        foreach ($items as $key => $item) {
            if ($item['pid'] == 0) {  //为0,则为1级分类
                $tree[] = &$items[$key];
            } else {
                if (isset($items[$item['pid']])) { //存在值则为二级分类
                    $items[$item['pid']]['child'][] = &$items[$key];  //传引用直接赋值与改变
                } else { //至少三级分类
                    //由于是传引用思想,这里将不会有值
                    $tree[] = &$items[$key];
                }
            }
        }
 
        return $tree;
    }


转载于:https://my.oschina.net/kenblog/blog/516107

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值