用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2463|回复: 2
收起左侧

无限级循环问题

[复制链接]
发表于 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=InnoDB  DEFAULT 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;
    }
发表于 2012-3-13 08:45:03 | 显示全部楼层
http://topic.csdn.net/u/20090910 ... 3-fcc2129e0b35.html
这篇帖子应该能解决你的问题  
 楼主| 发表于 2012-3-13 22:22:38 | 显示全部楼层
没人有空么?

本版积分规则