MySQL 设计无限极分类表
创建表
CREATE TABLE goods_types(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '分类名称',
parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '父级id'
);
插入一些测试数据
INSERT goods_types(name,parent_id) VALUES('家用电器',DEFAULT);
INSERT goods_types(name,parent_id) VALUES('电脑、办公',DEFAULT);
INSERT goods_types(name,parent_id) VALUES('大家电',1);
INSERT goods_types(name,parent_id) VALUES('生活电器',1);
INSERT goods_types(name,parent_id) VALUES('平板电视',3);
INSERT goods_types(name,parent_id) VALUES('空调',3);
INSERT goods_types(name,parent_id) VALUES('电风扇',4);
INSERT goods_types(name,parent_id) VALUES('饮水机',4);
INSERT goods_types(name,parent_id) VALUES('电脑整机',2);
INSERT goods_types(name,parent_id) VALUES('电脑配件',2);
INSERT goods_types(name,parent_id) VALUES('笔记本',9);
INSERT goods_types(name,parent_id) VALUES('超级本',9);
INSERT goods_types(name,parent_id) VALUES('游戏本',9);
INSERT goods_types(name,parent_id) VALUES('CPU',10);
INSERT goods_types(name,parent_id) VALUES('主机',10);
循环
<?php
/**
* $data 原始数据(二维数组)
* $parent_key 原始数据父级字段
* $child_key 生成子集的字段
*/
function treeArray($data,$parent_key,$child_key){
$tree = [];
foreach ($data as $key => $val) {
if ($val[$parent_key] == 0) {
$tree[] = &$data[$key];
} else {
$data[$val[$parent_key]][$child_key][] = &$data[$key];
}
}
return $tree;
}
?>