一个无限极分类如何显示下面格式:<ul>
<li class="row1">一级1
<ul>
<li class="row2">二级11</li>
<li class="row2">二级12</li>
<li class="row2">二级13
<ul>
<li class="row2">三级11
<ul>
<li class="row2">四级11</li>
<li class="row2">四级12</li>
<li class="row2">四级13</li>
</ul>
</li>
<li class="row2">三级21</li>
</ul>
</li>
</ul>
</li>
</ul>高手请教

解决方案 »

  1.   


    //假定的的数据是这样的
    $dat = array(
      array('id' => 1, 'pid' => 0, 'name' => '一级1' ),
      array('id' => 2, 'pid' => 1, 'name' => '二级11' ),
      array('id' => 3, 'pid' => 1, 'name' => '二级12' ),
      array('id' => 4, 'pid' => 9, 'name' => '三级11' ),
      array('id' => 5, 'pid' => 4, 'name' => '四级13' ),
      array('id' => 6, 'pid' => 9, 'name' => '三级21' ),
      array('id' => 7, 'pid' => 4, 'name' => '四级11' ),
      array('id' => 8, 'pid' => 4, 'name' => '四级12' ),
      array('id' => 9, 'pid' => 1, 'name' => '二级13' ),
    );$t = find_child($dat);
    echo foo(array($t[1]));function foo($ar) {
      $r = '<ul>';
      foreach($ar as $v) {
        $r .= '<li class="row1">' . $v['name'];
        if(isset($v['child'])) $r .= foo($v['child']);
        $r .= '</li>';
      }
      return $r . '</ul>';
    }   
    函数 find_child 的定义在这里 http://topic.csdn.net/u/20110728/15/eadffb68-5eb6-40d8-9ec1-2bc439f45322.html
      

  2.   

    <?php 
      $dat = array(
      array('id' => 1, 'pid' => 0, 'name' => '一级1' ),
      array('id' => 2, 'pid' => 1, 'name' => '二级11' ),
      array('id' => 3, 'pid' => 1, 'name' => '二级12' ),
      array('id' => 4, 'pid' => 9, 'name' => '三级11' ),
      array('id' => 5, 'pid' => 4, 'name' => '四级13' ),
      array('id' => 6, 'pid' => 9, 'name' => '三级21' ),
      array('id' => 7, 'pid' => 4, 'name' => '四级11' ),
      array('id' => 8, 'pid' => 4, 'name' => '四级12' ),
      array('id' => 9, 'pid' => 1, 'name' => '二级13' ),
    );
    function find_child($ar, $id='id', $pid='pid') {
      foreach($ar as $v) $t[$v[$id]] = $v;
      foreach ($t as $k => $item){
        if( $item[$pid] ) {
          $t[$item[$pid]]['child'][$item[$id]] =& $t[$k];
        }
      }
      return $t;
    }$t = find_child($dat);
    echo foo(array($t[1]));function foo($ar) {
      $r = '<ul>';
      foreach($ar as $v) {
        $r .= '<li class="row1">' . $v['name'];
        if(isset($v['child'])) $r .= foo($v['child']);
        $r .= '</li>';
      }
      return $r . '</ul>';
    }  
    楼上的那个帖子,楼主你完全可以没事去看看下。真会有收获