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

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

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

Step 2、SQL语句:

SELECT * FROM `t_class` WHERE (  is_delete=0  ) ORDER BY parent_id ASC,id ASC        //这里的排序是至关重要的

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

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

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

/**
     * 无限级分类
     *
     * @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、应用封装的函数

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

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

Step 7、模板中的实现:

<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、最终效果:

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xcywt

编译到底做了什么(***.c -> ***.o的过程)

 (第一次写博客,好激动的说.......) 我们知道,一个程序由源代码到可执行文件往往由这几步构成: 预处理(Prepressing)-> 编译(Compil...

2035
来自专栏编程

看不懂CNC编程?送你一份CNC程序代码大全

一、常用地址符含义 二、数控FANUC加工中心编程指令代码详解 辅助功能M指令 注:在一个程序段中只能有指令一个M指令,如果在一个程序中出现两个或两个以上的M指...

3070
来自专栏木头编程 - moTzxx

ThinkPHP 框架下 BaseModel 类整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1212
来自专栏JetpropelledSnake

Vue学习笔记之计算属性和侦听器

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

1043
来自专栏对角另一面

lodash源码分析之自减的两种形式

这个世界需要一个特定的恶人,可以供人们指名道姓,千夫所指:“全都怪你”。 ——村上春树《当我谈跑步时我谈些什么》 本文为读 lodash 源码的第六篇,后续...

2966
来自专栏Felix的技术分享

《自制搜索引擎》笔记

4193
来自专栏耕耘实录

Linux三剑客之grep

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

1575
来自专栏小樱的经验随笔

BZOJ 1293: [SCOI2009]生日礼物【单调队列】

1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2534  Solv...

2605
来自专栏HansBug's Lab

1293: [SCOI2009]生日礼物

1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1096  Solv...

2657
来自专栏全沾开发(huā)

使用box-shadow进行画图(性能优化终结者)

1602

扫码关注云+社区