看你的结果就是CSDN左边的树嘛!
以前看到唠叨,大龄青年都贴过类似的代码,我就不贴了,楼主自己参考一下
http://expert.csdn.net/Expert/topic/2980/2980875.xml?temp=.3668939

解决方案 »

  1.   

    function SplitMyArray($myarray)
    {
            if (is_array($myarray))
            {
                    foreach ($myarray as $k => $v)
                    {
                            SplitMyArray($v);
                    }
            }
            else
                    echo $myarray . "\n";
    }
    SplitMyArray($array);
    没测试呢。。
      

  2.   

    http://fason.nease.net/samples/select/
    还是这个好,也是无限级的。
      

  3.   

    真不知道你这个数据打算怎么维护<?php
    $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);
    ?>
      

  4.   

    我喜欢用id和parent_id来实现,这样避免了级数问题。
      

  5.   

    我喜欢用id和parent_id来实现,这样避免了级数问题。
      

  6.   

    注释一下
    /***
    传入参数
    $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); //递归,检查当前节点是否有子节点
          }
        }
    }
      

  7.   

    to: xuzuning(唠叨) 这个数组是用一个sql 将 无限分类表类的所有数据入这个数组的,这个数组只是取值,无需维护^_^。原本是被这问题困扰了一会儿,后面己自己解决了,  和唠叨老大的惊人相似。 现将代码帖出来。
    是放置在类中使用的,下面是解决上面问题的部分
    --------------------------
    // 分析数组
    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;
    }
    ---------------
    明日结帖。