PHP单次数据库查询实现无限级分类
这里使用一张简单的地区表举例,表字段如下:
使用Sql:
SELECT id, parentid, name FROM area;
查询得出的数据形如:
array(3362){[0] => array(3) {["id"] => string(1) "1"["parentid"] => string(1) "0"["name"] => string(9) "北京"}[1] => array(3) {["id"] => string(1) "2"["parentid"] => string(1) "1"["name"] => string(9) "北京市"}[2] => array(3) {["id"] => string(1) "3"["parentid"] => string(1) "2"["name"] => string(9) "东城区"}[3] => array(3) {["id"] => string(1) "4"["parentid"] => string(1) "2"["name"] => string(9) "西城区"}[4] => array(3) {["id"] => string(1) "5"["parentid"] => string(1) "2"["name"] => string(9) "崇文区"} ...... }
使用函数xmsb_getDataTree:
/*** @desc xmsb_getDataTree 无限级分类函数* @param array $datas 查询出的数据* @param string $primaryKey 数据表的主键* @param string $parentKey 父节点字段名* @param string $nameKey 需要用到的名称字段* @param integer $firstParent 根节点主键值* @return array 返回树状结果集*/ function xmsb_getDataTree($datas, $primaryKey, $parentKey, $nameKey, $firstParent = 0) {if(!is_array($datas) || !$primaryKey || !$parentKey || !$nameKey) return false;$parentIds = array_column($datas, $parentKey);array_multisort($parentIds,SORT_ASC,$datas);$tree = array($primaryKey => 0, $parentKey => 0, $nameKey => 'xmsb');$tmpMap = array($firstParent => & $tree);foreach($datas as $rk => $rv){$tmpMap[$rv[$primaryKey]] = array($primaryKey => $rv[$primaryKey],$parentKey => $rv[$parentKey],$nameKey => $rv[$nameKey]);$parentObj = & $tmpMap[$rv[$parentKey]];if(!$parentObj['children']) $parentObj['children'] = array();$parentObj['children'][] = & $tmpMap[$rv[$primaryKey]];}return $tree['children']; }
返回值形如:
array(34) {[0] => array(4) {["id"] => string(1) "1"["parentid"] => string(1) "0"["name"] => string(9) "北京"["children"] => array(1) {[0] => array(4) {["id"] => string(1) "2"["parentid"] => string(1) "1"["name"] => string(9) "北京市"["children"] => array(18) {[0] => array(3) {["id"] => string(1) "3"["parentid"] => string(1) "2"["name"] => string(9) "东城区"}[1] => array(3) {["id"] => string(1) "4"["parentid"] => string(1) "2"["name"] => string(9) "西城区"}......}} ......}}...... }
转载于:https://www.cnblogs.com/XiaoMingBlingBling/p/11244420.html
PHP单次数据库查询实现无限级分类相关推荐
- mysql 家谱树查询_无限级分类之查找子孙树和家谱树
$area=array( array('id'=>'1','name'=>'河南','parent'=>0), array('id'=>'2','name'=>'吉林', ...
- php 表单 与数据库查询
<?phpheader("content-type:text/html;charset=utf-8"); //头部编码mysql_connect("localhos ...
- 无限级分类的数据库设计
文章目录 场景 分析 邻接列表模式 物化路径模式 闭包表 场景 无限级分类是经常遇到的设计模式 分析 无限级分类常用的模式 (每种模式都是根据需要选择) 邻接列表模式 物化路径模式 闭包表模式 邻接列 ...
- php 怎么进行无限级查询,php如何实现无限级分类?
在php中,可以利用递归算法并结合mysql数据表来实现无限级分类.下面本篇文章给大家介绍一下实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 什么是无限级分类? 无限级分类 ...
- 新建oracle数据库 环境查询,Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇...
Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇 系统环境: 操作系统:RedHat EL55 Oracle : Oracle 11.2.0.1.0 集群软件:Oracle ...
- php mysql怎么实现,使用php与mysql怎么实现一个无限级分类
使用php与mysql怎么实现一个无限级分类 发布时间:2020-12-25 15:25:14 来源:亿速云 阅读:84 作者:Leah 本篇文章为大家展示了使用php与mysql怎么实现一个无限级分 ...
- php mysql 一级分类_无限级分类 for PHP+Mysql
一个PHP项目要用到分类,但不确认是4级还是需要用到5级,想着干脆做成无限级分类好了. 一开始想是按以前一样,数据库建4个值,如下: id: 自增 | pid: 父类ID | xid: ...
- php无限级分类是什么意思,PHP 无限级分类(递归)
网上有很多,这是我自己做测试用的 $arr = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name ...
- 无限级分类实现思路 (组织树的分级管理)
2019独角兽企业重金招聘Python工程师标准>>> 关于该问题,暂时自己还没有深入研究,在网上找到几种解决方案,各有优缺点. 第一种方案: 使用递归算法,也是使用频率最多的,大部 ...
最新文章
- 智能路由器操作系统OpenWrt
- wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...
- html层次选择器例题,JQuery 层次选择器的例子
- AUTOSAR从入门到精通100讲(二十一)-AUTOSAR通信篇—IpduM模块
- 通过ajax提交到url路由
- 字节跳动宣布取消大小周;淘宝、支付宝等阿里系App取消开屏广告;Python 3.10 beta 4 发布|极客头条...
- od拦截消息 comboboxonchange_某聊天软件逆向之偷看消息不quot;已读quot;
- html ajax请求乱码,关于Ajax请求中传输中文乱码问题的解决方案
- android ssh软件,优秀的 Android SSH 工具推荐
- 硬件产品的成本构成——研发、产品边际成本和服务
- 学电力好还是计算机好,毕业后想进电力系统上班?这三个专业可优先考虑
- python解密sg11加密_linux下kangle的php安装sourceguardian SG11加密解密扩展
- python实现英文新闻摘要自动提取_利用Python实现摘要自动提取,完美瘦身只需一行代码...
- 生死大PK:软路由是否会威胁到硬路由
- Zero-Shot相关论文阅读报告
- 这6个编程语言排行榜,据说全都知道的人不足1% | 年终榜单大盘点
- 初试傲游浏览器/Maxthon3,4大惊喜,1点遗憾
- 1——从IOP思想开始
- Jasperreport_6.18的回血终结篇之案例目录、封面
- 2022CoCa: Contrastive Captioners are Image-Text Fountion Models
热门文章
- mset redis_redis mset string 命令简介
- python搜索关键词自动提交_python+selenium实现自动化百度搜索关键词
- android+mms发送流程,mms发送流程代码版droid.docx
- C# List集合求交集
- 记录一次和朋友聊天遇到的面试题 ip地址字符串和long类型的相互转换 都是参考了别人的代码 加了一些个人理解的总结
- 中国已与36个国家(地区)海关实现“经认证的经营者”(AEO)互认
- LINQ-to-SQL那点事~LINQ-to-SQL中的并发冲突与应对
- 网宿科技:向云服务商转型
- 程序中减少使用if语句的方法集锦
- linux shell 特殊符号的表示