美文网首页ThinkPHP开发
php+Thinkphp+无限极分类 递归方法代码

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

作者: 老牛圣斗士 | 来源:发表于2016-10-28 22:29 被阅读121次

    第一步、创建数据库

    数据表创建直接复制到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是用于循环几级分类,有阶梯的效果显示作用

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

    相关文章

      网友评论

        本文标题:php+Thinkphp+无限极分类 递归方法代码

        本文链接:https://www.haomeiwen.com/subject/epieuttx.html