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是用于循环几级分类,有阶梯的效果显示作用
到此就实现了无限极分类了。