PHPTree——快速生成无限多级分类
2019独角兽企业重金招聘Python工程师标准>>>
在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构。这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,
它就是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);?>
输出:
[{"id": 1,"name": "book","parent_id": 0,"expanded": false, //不展开子节点"children": [{"id": 3,"name": "book1","parent_id": 1,"expanded": false,"children": [{"id": 4,"name": "book2","parent_id": 3,"leaf": true}]}]},{"id": 2,"name": "music","parent_id": 0,"leaf": true}
]
生成的数据就是树形结构了,可以结合ExtJS等前端框架来使用了。git中包含了一个ExtJS的demo,大家可以参考。
演示:
如果不需要使用前端框架,只是用HTML输出,可以使用下面的方法:
$r = PHPTree::makeTreeForHtml($data);
得到一个一维数组,用 level 字段来标识分类的层次:
array(array('id'=>1,'name'=>'用户管理','parent_id'=>0,'level'=>0 //一级分类),array('id'=>1,'name'=>'用户列表','parent_id'=>1,'level'=>1 //二级分类)....
);
输出为select标签:
echo '<h1>PHPTree树形结构</h1>';
echo '<select style="width:300px;">';
foreach($r as $item){echo '<option>';//根据所在的层次缩进echo str_repeat('......',$item['level']);echo $item['name'];echo '</option>';
}
echo '</select>';
演示:
git中包含了一个输出HTML的demo,大家可以参考。
关于数据库的设计,只需要保证包含 id 和 parent_id 字段即可,其他字段可以自行添加,不会影响数据生成。parent_id是父级ID,如果是一级分类,就设为 0 。当然,字段也是可以配置的。请继续往下看,我将介绍一些进阶的使用方法。
展开子节点:
PHPTree::makeTree( $data, array('expanded' => true
));
输出的数据为:
[{id:1,name:'book1',expanded:true,//展开子节点children:[...]}
]
自定义主键和父键:
//数据库读出
$data = array(array('order_id'=>1, //主键'name'=>'book1','pid'=>0, //父键...)
);
PHPTree::makeTree( $data, array('primary_key' => 'order_id','parent_key' => 'pid'
));
输出的数据为:
[{order_id:1,name:'book1',pid:0,...}
]
makeTreeForHtml 方法也支持配置主键和父键。
还有其他字段也可以自定义,但下面这些参数仅支持 makeTree 方法:
$r = PHPTree::makeTree($data, array('expanded_key' => 'expanded','children_key' => 'children','leaf_key' => 'leaf'
));
默认,这些字段的配置都是以ExtJS为参考的,如果你使用zTree框架的话,这些字段就需要重新配置了。
zTree 是一款强大的国产树形框架,它还支持 简单JSON格式,是一维数据格式,实际上就不需要用到PHPTree了。当然,PHPTree输出的数据层次感清晰,zTree也是支持的。
转载于:https://my.oschina.net/crazymus/blog/491174
PHPTree——快速生成无限多级分类相关推荐
- php无限分级快速,PHPTree——php快速生成无限级分类_php技巧
在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构.这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率,需要的朋友可以参考下 它就是PHPTree. git ...
- php根据分类生成网址,PHP实现无限极分类生成分类树的方法
本文实例讲述了PHP实现无限极分类生成分类树的方法.分享给大家供大家参考,具体如下: 现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出 ...
- tp6中无限极分类里面的获取多级分类数据
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 文章目录 前言 一.什么是多级分类数据? 二.使用步骤 sql 代码 2.效果图 总结 前言 和大家共同完成获取多级分类数据 ...
- linux dd 截文件,Linux使用dd命令快速生成大文件(转)
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
- 无限级分类 php_php无限极分类的方法是什么
今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种.具体方法如下: 首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks. 相关推荐:<PHP教程> 第 ...
- php实现栏目三种类型,WordPress后台edit-tags.php里无限栏目分类实现
在 WordPress 里 http://localhost/wordpress3.6.1/wp-admin/edit-tags.php?taxonomy=category 这个链接可以显示 WP 里 ...
- java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法
SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE ...
- 无限极分类php简单,创建无限极分类树型结构的简单方法
先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...
- Python快速生成注释文档
Python为我们生成基本满足的说明文档,一来可以提高代码整体阅读性,二来可以将代码的整体结构看着也更清晰. 注意:注释的地方和函数名类名都是与__all__内相关联的 简单的代码格式: #!/usr ...
最新文章
- jQuery学习(一)
- iPhone磁盘空间/剩余空间代码
- python编写函数求n阶调和数_Python实现调和级数的计算
- Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler
- 两个八进制小数怎么相加_两个十六进制怎么相加的
- 【计算机网络】——初识计算机网络
- spring_restful_json_jdbc
- 最新最全git使用大全
- E大调第一个指型_初学吉他大调与对应小调的知识,看完这个就懂了
- 服务器如何连接多屏显示器,电脑设置两个显示器多屏显示
- JAVA基础---函数式接口、Stream流
- 2015年底学习汇总报告
- P12证书转BKS证书
- office2007无法使用宏的解决方法
- html分列代码,实现分列的两段excel vba 分列代码
- 如何使 SAP UI5 SmartField 在运行时渲染成超链接的形式并支持跳转的试读版
- 简单工厂—工厂方法—抽象工厂
- 17-kubernetes集群中ceph集群使用
- 2014 ACM亚洲区域赛 - 北京现场赛
- The ACM Publishing System (TAPS) ACM出版系统上传文章 操作流程