首页 > 代码库 > ThinkPHP运用递归实现无限级栏目分类
ThinkPHP运用递归实现无限级栏目分类
本例中,只加入能实现效果的内容,其他额外内容视情况添加。
1.首先,创建栏目表(column)
1 2 3 4 5 6 7 8 9 10 | CREATE TABLE ` column ` ( `id` int UNSIGNED NOT NULL AUTO_INCREMENT , `cname` varchar (30) NULL , `pid` int NULL DEFAULT 0 , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARACTER SET =utf8 COLLATE =utf8_general_ci CHECKSUM=0 DELAY_KEY_WRITE=0; |
插入几条测试数据
这个很容易理解,就是pid等于id的即为其子栏目。这个就不用说了吧~
2.在控制器中将所有栏目查询出来
$result=M(‘column‘)->select();
3.重要的一步,就是利用递归将其下的子栏目,以数组形式压入。我们用如下函数实现
我们只要将第二步查出的数据运用这个函数,就会显示为下面这样的格式
$list=column_merge($result);
dump($list);
因为前台也会涉及这个函数,所以我们将这个函数写在function.php文件中,然后将文件放在应用目录下(默认Application)的Common/common文件夹中,这样前台和后台就
可以调用此函数了
4.在模板显示
先在控制器将数组分配过去
$result=M(‘column‘)->select();
$this->list=column_merge($result);
然后在模样中输出
1 2 3 4 5 6 | < volist name = ‘list‘ id = ‘top‘ > < h2 >{$top.cname}</ h2 > < volist name = ‘top.son‘ id = ‘son‘ > < h4 >{$son.cname}</ h4 > </ volist > </ volist > |
至此,我们的基本效果就实现了。其他效果自行添加
张盖盖博客 http://www.zhanggaigai.com/b/1.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。