<?php
$addr[] = array('id'=>1,'pid'=>0,'name'=>'北京');
$addr[] = array('id'=>2,'pid'=>0,'name'=>'河北');
$addr[] = array('id'=>3,'pid'=>2,'name'=>'保定');
$addr[] = array('id'=>4,'pid'=>2,'name'=>'石家庄');
$addr[] = array('id'=>5,'pid'=>4,'name'=>'南焦');
$addr[] = array('id'=>6,'pid'=>4,'name'=>'太和电子城');
$addr[] = array('id'=>7,'pid'=>0,'name'=>'上海');
//递归查找层级
function div($arr,$count,$pid)
{
if(0!=$pid){
foreach($arr as $k=>$v)
{
if($pid==$v['pid'])
{
$count++;
foreach($arr as $chlidV)
{
if($chlidV['id']==$pid){
return div($arr,$count,$chlidV['pid']);
}
}
}
}
}
return $count;
}
//树型
function tree($arr,&$newarr,$pid)
{
foreach($arr as $k=>$v)
{
if($pid==$v['pid'])
{
//标识
$temp = null;
if(0!=$pid)
{
$newName = $v['name'];
$count = div($arr,0,$pid);
if($count)
{
for($i=0;$i<$count;$i++)
{
$temp = (0==$i) ? '|-' : $temp.="-";
}
$newName = $temp.$newName;
}
$temp = array('id'=>$v['id'],'pid'=>$v['pid'],'name'=>$newName);
}
else
{
$temp = $v;
}
//标识end
array_push($newarr,$temp);
tree($arr,$newarr,$temp['id']);
}
}
}
//调用输出
$newarray = array();
tree($addr,$newarray,0);
foreach($newarray as $k=>$v)
{
echo $v['name']."<br/>";
}
?>
- 上一篇:修改织梦57标题长度限制问题
- 下一篇:各语言对于 方法传数组引用还是值传递