ASP教程 |PHP教程 |JSP教程 |.net教程 |CGI教程 |XML教程 |AJAX |HTML |网站重构 |CSS教程 |JS教程 |网页设计 |数据库 |服务器 |开发工具 |网站运营
论坛模板 |CMS模板 |产品网页 |商务 |主机网站 |旅游网站 |体育 |娱乐 |艺术网站 |建筑网页 |动植食物 |人物网站 |教育网页 |企业网站 |简约 |另类
编程 |界面设计 |加解密 |浏览阅读 |装机必备 |IIS软件 |FTP软件 |安全软件 |远程监控 |邮件系统 |虚拟主机 |web服务 |组件 |设计软件 |数据库
网站运营 |asp电子书 |PHP电子书 |.net电子书 |JSP电子书 |CGI |数据库XML |服务器 |HTML |设计教程 |AJAX |C语言 |VB |DELPHI |安全 |其它
asp源码 |ASP.NET源码 |PHP源码 |JSP源码 |CGI源码 |FLASH源码 |AJAX源码 |电子商务 |办公OA源码 |公司网站源码 |整站源码
系统 |房屋 |苹果 |文件夹 |电脑 |影视 |动植物 |表情 |系列 |软件 |文件 |游戏 |工具 |CD光盘 |交通 |人物 |食物 |体育 |国旗 |卡通 |标志 |桌面
风景图片 |花草图片 |水资源图片 |动物 | 美食 |人物图片 |抽象 |民族艺术 |静物图片 |宇宙图片 |建筑图片 |装修图片 |科技交通 |体育图片 |精美图片
书法家字体 |迷你 |金梅 |汉仪 |华文 |长城 |创艺 |汉鼎 |金桥 |文鼎 |微软 |超世纪 |中国龙 |四通利方 |华康 |经典 |王汉宗 |中文 |英文 |其它
韩国酷站 |欧美酷站 |中国酷站 |日本酷站 |黑色酷站白色酷站 |灰色酷站 | 红色酷站 |橙色酷站 |黄色酷站 |绿色酷站 |青色酷站 |蓝色酷站 |紫色酷站
广告代码 |导航条 |菜单特效 |日期时间 |背景图像 |图层样式 |鼠标特效 |页面窗口 |色彩表格 |文字特效 |表单按钮 | 计数转换 |游戏特效 |实例特效
网站免费登陆 |Alexa排名查询 |广告代码下载 |站长工具 |查询工具 |技术手册查询 |WHOIS信息查询 |PR值查询 |收录查询 |极品万年历 |身份证查询
当前位置: 牛头网主页电脑学院PHP教程→ php:树形结构的算法 4

php:树形结构的算法 4

来源:     作者:     时间:2008-08-17     点击:
<?php
  /**
  * 显示列表
  * @access public
  */
  function DispList()
  {
  //不缩进的显示方式
  // $this->mIsDispListIndex = true;
  // echo('<p align="right"><a href="?action=new&part=role">增加新角色</a>  </p>'); _fcksavedurl=""?action=new&part=role">增加新角色</a>  </p>');"
  //
  // $this->mListTitle = '用户角色列表';
  // $this->SetDataOption('list');
  //
  // $this->SetQueryTable( array($this->mTableUserRole) );
  //
  // //查询顺序
  // $this->SetQueryOrder( 'asc', $this->mTableUserRole, 'sequence' );
  //
  // $this->Query('list');
  // parent::DispList();
  
  // //另外一种显示方式,用数组作为堆栈,A: 压栈时存role,压完就删除source
  // $this->CheckProperty('mrDb');
  // $this->CheckProperty('mrSql');
  // $this->mrSql->Select('role, title, parent');
  // $this->mrSql->From($this->mTableUserRole);
  // $this->mrSql->Orderby('parent, sequence');
  // $this->mRs = $this->mrDb->Execute($this->mrSql->Sql());
  // if (0 < count($this->mRs))
  // {
  // $source = & $this->mRs->GetArray(); //数字索引
  // $stack = array(''); //堆栈
  // $stacki = array(-1); //和堆栈对应,记录堆栈中数据在树中的层次
  // $target = array();
  // while (0 < count($stack))
  // {
  // $item = array_shift($stack);
  // $lev = array_shift($stacki);
  // if (!empty($item))
  // {
  // //在这里把加工过的数据放到target数组
  // array_push($target, str_repeat(' ', $lev) . $item);
  // //$s1 = str_repeat(' ', $lev) . $item;
  // }
  // $del = array(); //要从$source中删除的节点
  // $ar = array(); //需要添加到堆栈中的节点
  // foreach ($source as $key=>$val)
  // {
  // //寻找匹配的子节点
  // if (empty($item))
  // {
  // $find = empty($source[$key]['parent']);
  // }
  // else
  // {
  // $find = ($item == $source[$key]['parent']);
  // }
  // if ($find)
  // {
  // array_unshift($ar, $source[$key]['role']);
  // $del[] = $key;
  // }
  // }
  // foreach ($ar as $val)
  // {
  // array_unshift($stack, $val);
  // array_unshift($stacki, $lev + 1);
  // }
  // foreach ($del as $val)
  // {
  // unset($source[$val]);
  // }
  // echo(implode(', ', $stack) . '<br />' . implode(', ', $stacki) . '<br />' . implode(', ', $target) . '<br /><br />');
  // }
  // debug_array();
  // }
  // else
  // {
  // echo('<center>没有检索到数据</center>');
  // }
  
  //另外一种显示方式,用数组作为堆栈,B: 压栈时存数组索引,出栈并使用完后再删除source
  $this->CheckProperty('mrDb');
  $this->CheckProperty('mrSql');
  $this->mrSql->Select('role, title, parent');
  $this->mrSql->From($this->mTableUserRole);
  $this->mrSql->Orderby('parent, sequence');
  $this->mRs = $this->mrDb->Execute($this->mrSql->Sql());
  if (!empty($this->mRs) && !$this->mRs->EOF)
  {
  $source = & $this->mRs->GetArray(); //数字索引
  $stack = array(-1); //堆栈
  $stacki = array(-1); //和堆栈对应,记录堆栈中数据在树中的层次
  $target = array();
  while (0 < count($stack))
  {
  $item = array_shift($stack);
  $lev = array_shift($stacki);
  if (-1 != $item)
  {
  //在这里把加工过的数据放到target数组
  $s1 = str_repeat(' ', $lev) . '<a href="?action=disp&part=role&role=' . $source[$item]['role'] . '">' . $source[$item]['title'] . '</a>';
  $s2 = '<a href="?action=edit&part=role&role=' . $source[$item]['role'] . '">编辑</a> <a href="?action=delete&part=role&role=' . $source[$item]['role'] . '">删除</a>';
  array_push($target, array($s1, $s2));
  }
  $del = array(); //要从$source中删除的节点
  $ar = array(); //需要添加到堆栈中的节点
  foreach ($source as $key=>$val)
  {
  //寻找匹配的子节点
  if (-1 == $item)
  {
  $find = empty($source[$key]['parent']);
  }
  else
  {
  $find = ($source[$item]['role'] == $source[$key]['parent']);
  }
  if ($find)
  {
  array_unshift($ar, $key);
  }
  }
  foreach ($ar as $val)
  {
  array_unshift($stack, $val);
  array_unshift($stacki, $lev + 1);
  }
  //从source中删除
  unset($source[$item]);
  //echo(implode(', ', $stack) . '<br />' . implode(', ', $stacki) . '<br />' . implode(', ', $target) . '<br /><br />');
  }
  //输出
  echo('<p align="right"><a href="?action=new&part=role">增加新角色</a>  </p>');
  array_unshift($target, array('角色', '操作'));
  $this->CheckProperty('mrLt');
  $this->mrLt->SetData($target);
  $this->mrLt->mListTitle = '用户角色列表';
  $this->mrLt->mIsDispIndex = false;
  $this->mrLt->Disp();
  }
  else
  {
  echo('<center>没有检索到数据</center>');
  }
  } // end of function DispList
  ?>
0
顶一下
最新图文
相关文章
最新评论 共有 0 位网友发表了评论  查看所有评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:   匿名?  注册
牛头网
·
为站长提供最便捷的下载服务
本月热门
最近更新
| 设为首页 | 加入收藏 | 联系站长 | 广告服务 | 诚聘英才 | 网站地图 | RSS订阅 | 建站服务 |