首页 > 代码库 > 无限级分类功能实践
无限级分类功能实践
在一般的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或更多),代码性能随着层级加大而下降(虽可通过添加冗余字段改善,但数据维护成本较高),不适合用于较复杂的业务场合(如用户关注链,音频相似链等表示数据实体单向关系的场景)
第二种:
待续。。。
无限级分类功能实践
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。