看你的结果就是CSDN左边的树嘛!
以前看到唠叨,大龄青年都贴过类似的代码,我就不贴了,楼主自己参考一下
http://expert.csdn.net/Expert/topic/2980/2980875.xml?temp=.3668939
以前看到唠叨,大龄青年都贴过类似的代码,我就不贴了,楼主自己参考一下
http://expert.csdn.net/Expert/topic/2980/2980875.xml?temp=.3668939
{
if (is_array($myarray))
{
foreach ($myarray as $k => $v)
{
SplitMyArray($v);
}
}
else
echo $myarray . "\n";
}
SplitMyArray($array);
没测试呢。。
还是这个好,也是无限级的。
$d = array(
1 => array(
0 => array(
1 => "<option value='1'>|-分类一</option>",
2 => "<option value='2'>|-分类二</option>",
3 => "<option value='3'>|-分类三</option>"
)
),
2 => array(
1 => array(
4 => "<option value='4'>|--分类一子分类</option>",
5 => "<option value='5'>|--分类一子分类二</option>"
),
2 => array(
8 => "<option value='8' selected>|--分类二子分类一</option>",
9 => "<option value='9'>|--分类二子分类二</option>"
),
3 => array(
10 => "<option value='10'>|--三类二子分类一</option>",
),
),
3 => array(
4 => array(
6 => "<option value='6'>|---分类一子分类的子分类</option>",
),
8 => array(
11 => "<option value='11'>|---二子分类二</option>",
),
),
4 => Array(
6 => array(
7 => "<option value='7'>|----分类一子分类的子分类的子分类</option>",
),
)
);function foo($in,$deep,$key=0) {
if(!isset($in[$deep])) return;
foreach($in[$deep] as $pid=>$ar)
if($key == $pid)
foreach($ar as $id=>$v) {
echo "$v\n";
foo($in,$deep+1,$id);
}
}foo($d,1,0);
?>
/***
传入参数
$in 数据数组,
$deep 当前层次,
$key=0 上级键
*/
function foo($in,$deep,$key=0) {
if(!isset($in[$deep])) return; //如果没有所需层次则返回
// 遍历当前层次数据
foreach($in[$deep] as $pid=>$ar)
if($key == $pid) { //检查是否有父节点
foreach($ar as $id=>$v) {
echo "$v\n";
foo($in,$deep+1,$id); //递归,检查当前节点是否有子节点
}
}
}
是放置在类中使用的,下面是解决上面问题的部分
--------------------------
// 分析数组
function ReSort($Arr,$a,$b) { //$Arr 为上述的数组
if(is_array($Arr[$a][$b])) {
foreach($Arr[$a][$b] as $k=>$v) {
//echo "<hr>".$k.$v;
$this->sort .= $v;
$this->ReSort($Arr,$a+1,$k);
}
}
Return $this->sort;
}
---------------
明日结帖。