您的位置:首页 > 数码常识数码常识
PHP递归实现层级树状展开的方法(树的层次遍历递归)
2025-05-13人已围观
PHP递归实现层级树状展开的方法(树的层次遍历递归)
这篇文章主要为大家详细介绍了PHP递归实现层级树状展开的相关资料,需要的朋友可以参考下
树的层次遍历递归
效果图:
实现代码:
<?php
$db=mysql_connect('localhost', 'root', 'root') or die('Can't connect to database');
mysql_select_db('test') or die('Can't find database : test');
$result=mysql_query('select id, fid, name from tree');
while($arr=mysql_fetch_array($result)){
$data[]=array(
'id'=> $arr['id'],
'fid'=> $arr['fid'],
'name'=> $arr['name'],
);
}
// 将数据按照缩进简单排列 见图1
function data2arr($tree, $rootId=0, $level=0) {
foreach($tree as $leaf) {
if($leaf['fid']==$rootId) {
echo str_repeat(' ', $level) . $leaf['id'] . ' ' . $leaf['name'] . '<br/>';
foreach($tree as $l) {
if($l['fid']==$leaf['id']) {
data2arr($tree, $leaf['id'], $level + 1);
break;
}
}
}
}
}
data2arr($data);
echo '<br/>-----------------------------------------------------------------------<br/>';
// 将数据按照所属关系封装 见图2
function arr2tree($tree, $rootId=0) {
$return=array();
foreach($tree as $leaf) {
if($leaf['fid']==$rootId) {
foreach($tree as $subleaf) {
if($subleaf['fid']==$leaf['id']) {
$leaf['children']=arr2tree($tree, $leaf['id']);
break;
}
}
$return[]=$leaf;
}
}
return $return;
}
$tree=arr2tree($data);
print_r($tree);
echo '<br/>-----------------------------------------------------------------------<br/>';
// 将数据使用HTML再次展现 见图3
function tree2html($tree) {
echo '<ul>';
foreach($tree as $leaf) {
echo '<li>' .$leaf['name'];
if(! emptyempty($leaf['children'])) tree2html($leaf['children']);
echo '</li>';
}
echo '</ul>';
}
tree2html($tree);
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
上面就是小居数码小编今天给大家介绍的关于(树的层次遍历递归)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
多维数组遍历PHP(PHP二维数组遍历)
for循环的遍历(遍历循环for的使用方法)
js数组遍历的几种方式(js中数组遍历的几种方法及其区别)
java中二维数组的遍历(java二维数组循环赋值)
155684
这篇文章主要为大家详细介绍了PHP递归实现层级树状展开的相关资料,需要的朋友可以参考下
树的层次遍历递归
效果图:
实现代码:
<?php
$db=mysql_connect('localhost', 'root', 'root') or die('Can't connect to database');
mysql_select_db('test') or die('Can't find database : test');
$result=mysql_query('select id, fid, name from tree');
while($arr=mysql_fetch_array($result)){
$data[]=array(
'id'=> $arr['id'],
'fid'=> $arr['fid'],
'name'=> $arr['name'],
);
}
// 将数据按照缩进简单排列 见图1
function data2arr($tree, $rootId=0, $level=0) {
foreach($tree as $leaf) {
if($leaf['fid']==$rootId) {
echo str_repeat(' ', $level) . $leaf['id'] . ' ' . $leaf['name'] . '<br/>';
foreach($tree as $l) {
if($l['fid']==$leaf['id']) {
data2arr($tree, $leaf['id'], $level + 1);
break;
}
}
}
}
}
data2arr($data);
echo '<br/>-----------------------------------------------------------------------<br/>';
// 将数据按照所属关系封装 见图2
function arr2tree($tree, $rootId=0) {
$return=array();
foreach($tree as $leaf) {
if($leaf['fid']==$rootId) {
foreach($tree as $subleaf) {
if($subleaf['fid']==$leaf['id']) {
$leaf['children']=arr2tree($tree, $leaf['id']);
break;
}
}
$return[]=$leaf;
}
}
return $return;
}
$tree=arr2tree($data);
print_r($tree);
echo '<br/>-----------------------------------------------------------------------<br/>';
// 将数据使用HTML再次展现 见图3
function tree2html($tree) {
echo '<ul>';
foreach($tree as $leaf) {
echo '<li>' .$leaf['name'];
if(! emptyempty($leaf['children'])) tree2html($leaf['children']);
echo '</li>';
}
echo '</ul>';
}
tree2html($tree);
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
上面就是小居数码小编今天给大家介绍的关于(树的层次遍历递归)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
多维数组遍历PHP(PHP二维数组遍历)
for循环的遍历(遍历循环for的使用方法)
js数组遍历的几种方式(js中数组遍历的几种方法及其区别)
java中二维数组的遍历(java二维数组循环赋值)
155684
很赞哦! ()
上一篇:cad2016安装激活教程(2016版cad怎么安装激活)
下一篇:返回列表