gxcnvip 发表于 2012-3-12 21:21:13

无限级循环问题

本帖最后由 gxcnvip 于 2012-3-13 21:35 编辑

如下数据表,当父ID(parent_id)为1的数据循环不了 li 呢?现在循环的结果是这样:
<li>
分类一一
<ul>
<li>分类一一一</li>
</ul>
分类一二
<ul>
<li>分类一一一11</li>
</ul>
</li>

我想循环为下列样子:
<li>
分类一一
<ul>
<li>分类一一一</li>
</ul>
</li>
<li>
分类一二
<ul>
<li>分类一一一11</li>
</ul>
</li>


刚才又折腾了一会,现在是多了个<li></li>标签,
怎么修改?请高手帮忙。。。谢谢了




CREATE TABLE `yn_category` (
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`sort` int(11) NOT NULL default '0',
PRIMARY KEY(`id`)
) ENGINE=InnoDBDEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

INSERT INTO `yn_category` VALUES (1, 0, '分类一', 0);
INSERT INTO `yn_category` VALUES (2, 1, '分类一一', 0);
INSERT INTO `yn_category` VALUES (3, 1, '分类一二', 0);
INSERT INTO `yn_category` VALUES (4, 2, '分类一一一', 0);
INSERT INTO `yn_category` VALUES (5, 4, '分类一二4', 0);
INSERT INTO `yn_category` VALUES (6, 3, '分类一一一11', 0);

Controller:

    public function index(){
      $this->db->order_by('id', 'DESC');
      $r = $this->db->get('category')->result_array();
      
      $t = $this->find_child($r);

      foreach($r as $k=>$v){
            if($v['parent_id'] == 0){
                echo $this->foo(array($t[$v['id']]));
            }
      }
      

    }
   
    function find_child($ar, $id='id', $parent_id='parent_id') {
      foreach($ar as $v) $t[$v[$id]] = $v;
            foreach ($t as $k => $item){
                if( $item[$parent_id] ) {
                $t[$item[$parent_id]]['child'][$item[$id]] =& $t[$k];
            }
      }
      return $t;
    }

    function foo($ar) {
      $r = '';
      $r = '<li>';
      foreach($ar as $k=>$v) {
            $r .= $v['name'];
            
            if(isset($v['child']))
            {
                $r .= '<ul>' ;
                $r .= $this->foo($v['child']);
                $r .= '</ul>';
            }
            $r.= '</li>';
            $r = '<li>';
      }
      return $r;
    }

zhengfeity 发表于 2012-3-13 08:45:03

http://topic.csdn.net/u/20090910/17/b4e02f61-cf51-4493-8cf3-fcc2129e0b35.html
这篇帖子应该能解决你的问题

gxcnvip 发表于 2012-3-13 22:22:38

没人有空么?
页: [1]
查看完整版本: 无限级循环问题