例子,php生成目录树的代码。
<?php
session_start();
include("inc/DBConnect.php");
$obj=new
DBClass();
include("inc/function.php");
/*
* 直接select * 获取所有数据
然后放到一个数组中 以menuid加一个字符
作为key
然后循环 找到有父id的从数组中删除 同时把其加入到
父menudid 的数组的 child中
把最终的到的数组
序列化存储。
下次如果这个有跟新 再跟新这个序列化的文件。
*
* */
?>
<?php
$sql ="Select * from menu ";
$result =
mysql_query($sql);
while($tmp =
mysql_fetch_assoc($result)){
$arr[] = $tmp;
}
$temp = $tree = array();
foreach($arr as $k =>
$v){
$temp[$v['id']] = $v;
}
//引用构造树
foreach($arr
as $k => $v){
if(isset($temp[$v['parentid']])){
$temp[$v['parentid']]['children'][] =
&$temp[$v['id']];
}else{
$tree[] =
&$temp[$v['id']];
}
}
echo
'<pre>';print_r($tree);
//递归输出
function get_children($tree, &$step = '', $html =
''){
foreach($tree as
$v){
$html .=
"{$step}{$v['name']}<br />";
if(isset($v['children'])){
$step .=
'---';
$html = get_children($v['children'], $step,
$html);
}else{
$step =
'';
}
}
return $html;
}
$html =
get_children($tree);
echo $html;
?>