前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP无限级分类函数封装与应用

PHP无限级分类函数封装与应用

作者头像
Sindsun
发布2018-04-28 11:17:25
1.6K0
发布2018-04-28 11:17:25
举报
文章被收录于专栏:狂码一生狂码一生

下面的讲解我用的是ThinkPHP框架,与PHP用法是一样的。

Step 1、数据表中主要字段是id、parent_id

blob.png
blob.png

Step 2、SQL语句:

代码语言:javascript
复制
SELECT * FROM `t_class` WHERE (  is_delete=0  ) ORDER BY parent_id ASC,id ASC        //这里的排序是至关重要的

Step 3、查询出的结果是一个常规的二维数组,如下图:

ps:pid就是parent_id,这里是举个例子,下文一样

blob.png
blob.png

Step 4、封装的无限级分类数组处理函数:

代码语言:javascript
复制
/**
     * 无限级分类
     *
     * @access public
     * @param Array $data
     *            //数据库里获取的结果集
     * @param Int $pid
     * @param Int $count
     *            //第几级分类
     * @return Array $treeList
     */
     // 存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空
    public static $treeList = array();
    static public function tree(&$data, $pid = 0, $count = 1)
    {
        foreach ($data as $key => $value) {
            if ($value['parent_id'] == $pid) {
                $value['Count'] = $count;
                self::$treeList[] = $value;
                unset($data[$key]);
                self::tree($data, $value['id'], $count + 1);
            }
        }
        return self::$treeList;
    }

Step 5、应用封装的函数

代码语言:javascript
复制
$data = self::tree($data);    //注意传递的参数(括号中的)$data为你从数据库中查询到的数组

Step 6、处理后的数据如图:

blob.png
blob.png

Step 7、模板中的实现:

代码语言:javascript
复制
<select class="select" id="sel_Sub" name="sel_Sub">
    <option value="0">顶级分类</option>
    <volist name="catTree" id="dlist" key="k" >
        <option value="{$dlist.id}">
	<if condition="$dlist['Count'] gt 1" >
	     <for start="0" end="$dlist['Count']" name="is">
		&nbsp;&nbsp;
	    </for>├ 
	</if>
	{$dlist.class_name}
	</option>
	</volist>
</select>

Step 8、最终效果:

blob.png
blob.png

    到这里就实现了一个无限下级的效果,这个函数是我从互联网上看到借鉴的,进行了一些修改,希望能够帮助大家解决工作或者学习中遇到的困难,不管是PHP还是thinkphp,用法其实一样,如果此文存在错或者有不懂的地方,可以在下方评论栏留言,我将为您解答!

版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编], 转载请备注出处:http://www.sindsun.com/article-details-21.html [若此文确切存在侵权,请联系本站管理员进行删除!]

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档