大家来看下这样的权限树怎么实现?谢谢

lzl8146 2005-06-14 10:26:16
给定节点的编码为(每三个一组向下扩充):
001
001001----(001的子节点)
001002-----(001的子节点)
001002001---(001002的子节点)
001002002
001002003
001003
002
002001
....
根据该编码生成树型目录,希望能用递归和不用递归实现.
...全文
223 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzl8146 2005-08-10
  • 打赏
  • 举报
回复
//树的生成算法(非递归算法)
生成菜单对象$menu;

//生成"权限管理"父节点;
$topNode="node";
$$topNode=&menu->additem($text,$link,$current_node);

获得所有的对象列表$currentNode;

for($i=0;$i<count($currentNode);$i++){
$fathercode=substr($currentNode[$i]['classcode'],0,(strlen($currentNode[$i]['classcode'])-3));
//计算父节点名称;
$parnetNode=trim("node".$fathercode);
$prefix_node="node".$current[$i]['classcode'];
$$prefix_node=&$$parentNode->additem($text,$link,$currentNode);
}
bflovesnow 2005-06-20
  • 打赏
  • 举报
回复
找找精华区?
wiwiboy 2005-06-20
  • 打赏
  • 举报
回复
可以新建一个表
插入你的所有的菜单名称,当然要区分一级,二级...
然后写个程序
循环调出一级菜单及其相应二级菜单(子菜单)
lzl8146 2005-06-14
  • 打赏
  • 举报
回复
下面是我写的代码,存在问题,望高手帮忙改正...(感觉思路一开始就是错误的,呵呵)


//树的生成算法(非递归算法)

生成父节点$root_node;

获得所有的对象列表$currentNode;

for($i=0;$i<count($currentNode);){
//获得当前对象$currentNode的父对象编码
$fathercode=substr($currentNode[$i]['classcode'],0,(strlen($currentNode[$i]['classcode'])-3));
if(父对象编码为空){
//以$root_node为父节点生成该节点;
$fatherNode=creatNode($text,$link,$currentNode,$root_node);

for($j=$i+1;$j<count($currentNode);$j++){
$fatherCode=substr($currentNode[$j]['classcode'],0,(strlen($currentNode[$j]['classcode'])-3));
$len=strlen($fatherCode);
if(strcmp(substr($currentNode[$j]['classcode'],0,$len),$fatherCode))==0){
//保留父指针
$nextNode=$fatherNode;
//生成节点的指针
$fatherNode=creatObj($text,$link,$childNode, $nextNode);
}
else{
//如果不是是同级节点
if(strlen($currentNode[$j]['classcode'])!=strlen($currentNode[$j-1]['classcode'])){
$nextNode--;
}
else{ //同级节点
$next=$fatherNode;
$fatherNode(creatObj($text,$link,$childNode,$nextNode);
}

}
}
}
FoolBoy 2005-06-14
  • 打赏
  • 举报
回复
考虑这种思路:
一个函数负责生成树型目录数组
然后直接显示这个数组的内容即可

实际上,这种数据结构不好,如果在ORACLE中,可以考虑这种结构
本级机构ID 上级机构ID 机构其它信息
显示时用connect子句就可以了
梦幻山河 2005-06-14
  • 打赏
  • 举报
回复
顶啊,学习中,等着高手写好的代码!
mary0226 2005-06-14
  • 打赏
  • 举报
回复
关注
-神仙- 2005-06-14
  • 打赏
  • 举报
回复
排好序就可以了
直接根据长度缩进

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧