Maison > Questions et réponses > le corps du texte
首先创建数据表并添加些数据
CREATE TABLE IF NOT EXISTS category (
categoryId smallint(5) unsigned NOT NULL AUTO_INCREMENT,
parentId smallint(5) unsigned NOT NULL DEFAULT '0',
categoryName varchar(50) NOT NULL,
PRIMARY KEY (categoryId)
) ;
INSERT INTO category (categoryId, parentId, categoryName) VALUES
(1, 0, 'php'),
(2, 0, 'java'),
(3, 0, 'c/c++'),
(4, 1, 'php基础'),
(5, 1, 'php开源资料'),
(6, 1, 'php框架'),
(7, 2, 'java Se'),
(8, 2, 'java EE'),
(9, 2, 'java Me'),
(10, 3, 'c/c++基础编程'),
(11, 3, 'c/c++系统开发'),
(12, 3, 'c嵌入式编程'),
(13, 3, 'c++应用开发'),
(14, 13, 'c++桌面应用开发'),
(15, 13, 'c++游戏开发');
/**
*递归实现层级树状展现数据
*$tree为二位数组,
*$depth为树的最大深度,0表示不设置深度
*$rootId表示父级分类的ID
*$level记录层级树的层数
**/
function arr2tree($tree,$depth,$rootId = 0,$level=1) {
$return = array();
foreach($tree as $leaf) {
if($leaf['parentId'] == $rootId) {
$leaf['level'] = $level;
foreach($tree as $subleaf) {
if($subleaf['parentId'] == $leaf['categoryId'] && ($depth?$level<$depth:1)) {
$leaf['children'] = arr2tree($tree,$depth,$leaf['categoryId'],$level+1);
$level=1;
break;
}
}
$return[] = $leaf;
}
}
return $return;
}
$tree = arr2tree($category,0);
$tree1 = arr2tree($category,2);
echo "<pre>";
print_r($tree);
print_r($tree1);
PHPz2017-04-11 09:07:46
http://stackoverflow.com/questions/4196157/create-array-tree-from-array-list