最新赞助活动温馨提示:自愿赞助服务器费用,学生和没有工作的整站资源免费下载!
头像

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

来源:http://www.erdangjiade.com/php/1175.html 沐浴春风 2017-02-22 19:32浏览(1759)

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

0、请不要问“在不在”之类的问题,有问题直接问!1、学生或暂时没有工作的童鞋,整站资源免费下载!2、¥9.9充值终身VIP会员,加我微信,826096331 拉你进VIP群学习!3、程序员加油,技术改变世界。 在线 充值

极简代码实现高性能无限级分类
分类:PHP > 函数 难易:初级
查看演示 下载资源: 下载资源 下载积分: 0 积分

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

$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' => ''
                    ], 
            ], 
    ]
评论7
头像

友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群

  • 头像 6楼
    12-20 14:12
    liner0311
    正在学习PHP,这个分类的源代码很不错
  • 头像 5楼
    07-14 11:49
    xzszxiong
    并不能真正做到无极限
  • 头像 4楼
    06-25 10:43
    phpCalf
    太棒啦,很好的
  • 头像 3楼
    05-19 14:23
    默默的无恙
    很好的资源努力学习
  • 头像 板凳
    03-14 13:08
    13717866946@163.com
    很好的资源,努力学习
  • 头像 椅子
    03-13 09:32
    274923203
    可以 厉害
  • 头像 沙发
    03-01 11:31
    dwxlzy
    不错,学习学习了。
1 2