PHPTree——快速生成无限多级分类

在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构。这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,

它就是PHPTree。

git地址:https://git.oschina.net/jiusem/PHPTree.git

使用方法:

<?php 
require(‘PHPTree.class.php‘);

//原始数据, 从数据库读出
$data = array(
	array(
		‘id‘=>1,
		‘name‘=>‘book‘,
		‘parent_id‘=>0
	),
	array(
		‘id‘=>2,
		‘name‘=>‘music‘,
		‘parent_id‘=>0
	),
	array(
		‘id‘=>3,
		‘name‘=>‘book1‘,
		‘parent_id‘=>1
	),
	array(
		‘id‘=>4,
		‘name‘=>‘book2‘,
		‘parent_id‘=>3
	)
);

$r = PHPTree::makeTree($data);
echo json_encode($r);

?>

输出:

{
    "children": [
        {
            "id": 1,
            "name": "book",
            "parent_id": 0,
            "expanded": true,
            "children": [
                {
                    "id": 3,
                    "name": "book1",
                    "parent_id": 1,
                    "expanded": true,
                    "children": [
                        {
                            "id": 4,
                            "name": "book2",
                            "parent_id": 3,
                            "leaf": true
                        }
                    ]
                }
            ]
        },
        {
            "id": 2,
            "name": "music",
            "parent_id": 0,
            "leaf": true
        }
    ]
}

生成的数据就是树形结构了,可以结合zTree、ExtJS等前端框架来使用了。

关于数据库的设计,只需要保证包含 id 和 parent_id 字段即可,其他字段可以自行添加,不会影响数据生成。parent_id是父级ID,如果是一级分类,就设为 0 。

时间: 2024-10-12 02:24:27

PHPTree——快速生成无限多级分类的相关文章

Python中如何快速生成注释文档?

今天将告诉大家一个简单平时只要注意的python开发小细节,就可以轻松生成注释文档,也可以检查我们写的类方法引用名称是否重复有问题等.一看别人专业的大牛们写的文档多牛多羡慕,不用担心我们可以让python为我们生成基本满足的说明文档,一来可以提高代码整体阅读性,二来可以将代码的整体结构看着也更清晰,这样在交接的时候可以省很多麻烦,其它同事在接手你工作的时候也不会一行行去问你这是什么那是什么的,因为注释已经很直观的表述了,在整合的时候可当说明文档给客户简单说明(主要是给你BOSS看的),那么进入正

C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): 1 /// <summary> 2 /// 无限极节点类 3 /// </summary> 4 public class AdminUserTree 5 { 6 /// <summary> 7 /// 节点信息 8 /// </summary> 9 public int

创建无限极分类树型结构

先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类信息(id:该分类的ID值,cate_name:该分类的名称,pid:父ID,sorts:为显示标题顺序排序做准备,可不写.) 1 public function cate_display() 2 { 3 $cate = D('Cate'); 4 $field = array('id','cate_

快速生成沙盒目录的路径,多图片下载的原理(SDWebImage框架的简单介绍)

一.快速生成沙盒目录的路径 这个类主要是为了方便你快速拿到沙盒目录里文件夹的路径 给NSString写个分类 NSString+CHG.h #import <Foundation/Foundation.h> @interface NSString (CHG) // 用于生成文件在caches目录中的路径 - (instancetype)cacheDir; // 用于生成文件在document目录中的路径 - (instancetype)docDir; // 用于生成文件在tmp目录中的路径 -

WordPress后台edit-tags.php里无限栏目分类实现

在 WordPress 里 http://localhost/wordpress3.6.1/wp-admin/edit-tags.php?taxonomy=category 这个链接可以显示 WP 里的无限栏目分类,我们来研究一下 WordPress 是如何实现的. 找到 wp-admin/edit-tags.php 这个文件,发现显示栏目的代码很少: view source print? 1 <form id="posts-filter" action=""

PHP实现无限极分类的两种方式,递归和引用

面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' => 0, 'name' => '河北省'), array('id' => 2, 'pid' => 0, 'name' => '北京市'), array('id' => 3, 'pid' => 1, 'name' => '邯郸市'), array('id' =>

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo

如何快速生成视觉需求?

不少产品经理认为画视觉稿是视觉设计师的事情,所以偷懒也不整理视觉需求给到对方,最后验收发现缺少部分视觉稿,或者画出的视觉稿和PM要求的差异很大.介绍我自己研究出来的快速交付视觉需求的方法论,绝对值得学一学. 只有当PM将所有的视觉需求一一交付给视觉设计师,才能保证视觉设计师全面了解PM的设计思想,以及不会漏做相应的线框图. 一.需要交付的内容 刚入门的PM可能简单的把所有原型一股脑丢给视觉设计师,可能连当前版本还是所有版本都不区分.也不会区分线框图和交互图.视觉设计师只能自己琢磨,以及主动来问你

Logo图标快速生成软件(Sothink Logo Maker) v3.5 官方设计师版

Logo图标快速生成软件(Sothink Logo Maker) v3.5 官方设计师版 下载地址:http://www.cr173.com/soft/10238.html 硕思logo设计师怎么把背景logo去掉? http://jingyan.baidu.com/article/c275f6bac03b22e33c75674b.html 1.制作好LOGO之后,首先导出SVG文件,而不是直接导出图片,保存好. 2.利用浏览器打开存好的SVG文件. 3.右键保存为png或者bmp位图文件. 4