首先创建数据表并添加些数据
<code class="sql">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++游戏开发');</code>
<code>/**
*递归实现层级树状展现数据
*$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 class="brush:php;toolbar:false;">";
print_r($tree);
print_r($tree1);</code>首先创建数据表并添加些数据
<code class="sql">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++游戏开发');</code>
<code>/**
*递归实现层级树状展现数据
*$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 class="brush:php;toolbar:false;">";
print_r($tree);
print_r($tree1);</code>
http://stackoverflow.com/questions/4196157/create-array-tree-from-array-list
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号