首页 > 其他 > 详细

无限级分类功能实践

时间:2014-10-16 00:08:03      阅读:293      评论:0      收藏:0      [点我收藏+]

在一般的web开发中,无论是一般的企业建站,内部OA,电商,无限级分类都是一种很常见的功能。

实现该业务常见有三种(本人已知)方式,分别有其不同的优缺点,一般最常用是第一种,接下来分别简单介绍其数据结构和大体实现。

 

第一种:

表结构

字段 类型 主键
id int
parent_id int
value varchar

 

 

 

 

CREATE TABLE `NewTable` ( 
`id`  int UNSIGNED NOT NULL , 
`parent_id`  int UNSIGNED NOT NULL , 
`value`  varchar(100) NOT NULL , 
PRIMARY KEY (`id`) 
);

实现思路(代码示例)

function reorginaze($list, $parentId=0) {
    $result = array();
    foreach ($list as $item) {
        if ($item[‘ parent_id ‘] == $parentId) {
            $item[‘children‘] = reorginaze($list, $item[‘parent_id‘]);
            $result[] = $item;
        }
    }
    return $result;
}
$list = db_query(“SELECT * FROM NewTable”);
$tree = reorginaze($list);

优点:实现简单,能够高效取出和展示小规模的数据,非常适合用于常见的菜单、分类、标签等业务场景,添加叶节点和根节点也非常简单

缺点:删除中间叶节点稍显复杂,不适合单独取出某一链条,不适合规模较大的数据(1K或更多),代码性能随着层级加大而下降(虽可通过添加冗余字段改善,但数据维护成本较高),不适合用于较复杂的业务场合(如用户关注链,音频相似链等表示数据实体单向关系的场景)

 

第二种:

待续。。。

无限级分类功能实践

原文:http://www.cnblogs.com/koboshi/p/4027735.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!