php+Thinkphp+无限极分类 递归方法代码

第一步、创建数据库

数据表创建直接复制到mysql管理器里直接运行即可。

DROP TABLE IF EXISTS `lqr_class`;

CREATE TABLE `lqr_class` (

`Id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(50) DEFAULT NULL COMMENT '分类名称',

`typeid` int(11) DEFAULT '0' COMMENT '上级分类0表示一级',

`describe` varchar(255) DEFAULT NULL COMMENT '描述',

`sort` int(11) DEFAULT '0' COMMENT '排序',

`status` int(11) DEFAULT '0' COMMENT '是否显示0正常1隐藏',

`count` int(11) DEFAULT '0',

PRIMARY KEY (`Id`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

第二步、查询数据集合

//实例化class表

$Class = M('Class');

$list = $Class->order('Id desc')->select();

$list=$this->tree($list);

$data['list']=$list;

$this->assign('data',$data);//thinkphp输出模板页循环list

第三步、递归分类实现方法

static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空

/**

* 无限级分类

* @access public

* @param Array $data    //数据库里获取的结果集

* @param Int $pid

* @param Int $count      //第几级分类

* @return Array $treeList

*/

static  public function tree($data,$pid = 0,$count = 1)

{

foreach ($data as $key => $value)

{

if($value['typeid']==$pid)

{

$value['count'] = $count;

self::$treeList []=$value;

unset($data[$key]);

self::tree($data,$value['id'],$count+1);

}

}

return self::$treeList ;

}

第四步、输出模板页

<foreach name="data.list" item="vo">

<for start="0" end="$vo['count']">

<if condition="$i eq 0 ">

<else />-

</if>

{$vo['title']}

</foreach>

//注意for是用于循环几级分类,有阶梯的效果显示作用

到此就实现了无限极分类了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,771评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,941评论 18 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,774评论 0 9
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 销售是走心的,面对一个客户,需要自己付出自己的真诚,真心,这样客户就会知道,明白你的真诚客户就会感动并且会成交。 ...
    5点半跑步阅读 2,196评论 0 0