时间:2016-02-24 14:01 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【php:树形结构的算法 4】,下面是详细的分享!
php:树形结构的算法 4
<?phpfunction DispList()
{
//不缩进的显示方式
// $this->mIsDispListIndex=true;
// echo('<p align="right"><a href="http://www.chinaz.com/program/2007/0413/?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="http://www.chinaz.com/program/2007/0413/?action=disp&part=role&role=' . $source[$item]['role'] . '">' . $source[$item]['title'] . '</a>';
$s2='<a href="http://www.chinaz.com/program/2007/0413/?action=edit&part=role&role=' . $source[$item]['role'] . '">编辑</a> <a href="http://www.chinaz.com/program/2007/0413/?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="http://www.chinaz.com/program/2007/0413/?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
?>
以上所分享的是关于php:树形结构的算法 4,下面是编辑为你推荐的有价值的用户互动:
相关问题:求一个PHP如何建树形结构的视频
答:求一个PHP如何建树形结构的视频 2 分钟前 ldl_killer | 分类:PHP 求一个PHP如何建树形结构的视频,要运用jquery插件,在数... >>详细
相关问题:求如何用PHP编写树形结构 开源资源
答:用过dtree,用javascript实现的,LZ最好了解树的算法,自己根据算法实现. >>详细
相关问题:如何用php建立一个树形结构的类? - PHP进阶讨论
答:[php]tid=$tid;? ? ? ? ? ? ? ? $this->tname=$tname;? ? ? ? ? ? ? ? return true;? ? ? ? }? ? ? ? function add($object){? ? ? ? ? ? ? ? $this->tlib[]=&$object;? ? ? ? ? ? ? ? return true;? ? ? ? }? ? ? ? function display(){? ? ? ?... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
