首页 > 代码库 > 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;

插入几条测试数据

7151406258506.png

  这个很容易理解,就是pid等于id的即为其子栏目。这个就不用说了吧~

  2.在控制器中将所有栏目查询出来

  $result=M(‘column‘)->select();

  3.重要的一步,就是利用递归将其下的子栏目,以数组形式压入。我们用如下函数实现

  我们只要将第二步查出的数据运用这个函数,就会显示为下面这样的格式

  $list=column_merge($result);

  dump($list);

37491406258506.png

  因为前台也会涉及这个函数,所以我们将这个函数写在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