极简代码实现高性能无限级分类

极简代码实现高性能无限级分类

极简代码实现高性能无限级分类(非递归迭代),关键代码其实只有一行.

淘建站为您提供更多_函数_分类_无限,在此特别感谢您对我们的支持与厚爱!

查看演示

演示不了,点击反馈

加入收藏

下载 425 次

打赏作者

觉得不错,可打赏下作者

下载资源

免费共享

特别说明:本站资源来自网友发布分享,仅供学习与参考,请勿用于商业用途,若有侵权请联系删除(272966172@qq.com)。
分类:PHP功能模块 > 函数 难易程度:初级

极简代码实现高性能无限级分类(非递归迭代),关键代码其实只有一行.

$return[$v['pid']]['child'][$v['id']] = &$return[$k];

但是为了实现较为复杂的扩展,这里添加一些额外的信息 目前这方法的缺点是:无法获取目录的层级信息

//这个是元数据,你可以从数据库里面进行读取并且不需要进行转换
//因为代码部分会进行遍历处理

$list[] = ['id' => 0, 'pid' => -1, 'name' => 'A@0'];
//-1用于后面的根目录判断
//你也可以修改为0并修改后面的 if ($v['pid'] >= 0) 为  if ($v['pid'] > 0)
//数据库id应该不会出现等于0的情况吧
$list[] = ['id' => 1, 'pid' => 0, 'name' => 'A@1'];
$list[] = ['id' => 2, 'pid' => 0, 'name' => 'A@2'];
$list[] = ['id' => 3, 'pid' => 2, 'name' => 'A@3'];
$list[] = ['id' => 4, 'pid' => 3, 'name' => 'A@4'];
$list[] = ['id' => 5, 'pid' => 0, 'name' => 'A@5'];
$list[] = ['id' => 6, 'pid' => 1, 'name' => 'A@6'];

$return = [];//索引目录
$parent='';//根目录,


//数组预处理,这里的$v['id']一定要唯一,不然可能会出现被覆盖的情况
foreach ($list as $v)
    $return[$v['id']] = [
        'id' => $v['id'],
        'name' => $v['name'],
        'pid' => $v['pid'],
        'child' => '',
    ];



//将每个目录与父目录进行拼接,并找到根目录
foreach ($return as $k=>$v) {
    if ($v['pid'] >= 0)
//找到父路径,这里没有判断 $return[$v['pid']]['child']是否存在,
//TP5下或者在不存在的情况下可能会报错,自己加一下
        $return[$v['pid']]['child'][$v['id']] = &$return[$k];
    else
//找到根目录
        $parent = &$return[$k];
}

//打印根目录
var_export($parent);

=========输出结果

[
        'id' => 0,
        'name' => 'A@0',
        'pid' => -1,
        'child' =>
            [
                1 =>
                    [
                        'id' => 1,
                        'name' => 'A@1',
                        'pid' => 0,
                        'child' =>
                            [
                                6 =>
                                    [
                                        'id' => 6,
                                        'name' => 'A@6',
                                        'pid' => 1,
                                        'child' => '',
                                    ],
                            ],
                    ],
                2 =>
                    [
                        'id' => 2,
                        'name' => 'A@2',
                        'pid' => 0,
                        'child' =>
                            [
                                3 =>
                                    [
                                        'id' => 3,
                                        'name' => 'A@3',
                                        'pid' => 2,
                                        'child' =>
                                            [
                                                4 =>
                                                    [
                                                        'id' => 4,
                                                        'name' => 'A@4',
                                                        'pid' => 3,
                                                        'child' => '',
                                                    ],
                                            ],
                                    ],
                            ],
                    ],
                5 =>
                    [
                        'id' => 5,
                        'name' => 'A@5',
                        'pid' => 0,
                        'child' => '',
                    ],
            ],
    ]

声明:本资料由淘建站会员提供,如转载注明来源,资料来源淘建站免费素材库:https://www.taojz.cn/mokuai/1175.html
极简代码实现高性能无限级分类 希望对你有帮助,感谢您的支持!
留言(0)
头像
 阿里云限量代金券,戳我领取
1 2