这里使用一张简单的地区表举例,表字段如下:

使用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单次数据库查询实现无限级分类相关推荐

  1. mysql 家谱树查询_无限级分类之查找子孙树和家谱树

    $area=array( array('id'=>'1','name'=>'河南','parent'=>0), array('id'=>'2','name'=>'吉林', ...

  2. php 表单 与数据库查询

    <?phpheader("content-type:text/html;charset=utf-8"); //头部编码mysql_connect("localhos ...

  3. 无限级分类的数据库设计

    文章目录 场景 分析 邻接列表模式 物化路径模式 闭包表 场景 无限级分类是经常遇到的设计模式 分析 无限级分类常用的模式 (每种模式都是根据需要选择) 邻接列表模式 物化路径模式 闭包表模式 邻接列 ...

  4. php 怎么进行无限级查询,php如何实现无限级分类?

    在php中,可以利用递归算法并结合mysql数据表来实现无限级分类.下面本篇文章给大家介绍一下实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 什么是无限级分类? 无限级分类 ...

  5. 新建oracle数据库 环境查询,Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇...

    Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇 系统环境: 操作系统:RedHat EL55 Oracle : Oracle 11.2.0.1.0 集群软件:Oracle ...

  6. php mysql怎么实现,使用php与mysql怎么实现一个无限级分类

    使用php与mysql怎么实现一个无限级分类 发布时间:2020-12-25 15:25:14 来源:亿速云 阅读:84 作者:Leah 本篇文章为大家展示了使用php与mysql怎么实现一个无限级分 ...

  7. php mysql 一级分类_无限级分类 for PHP+Mysql

    一个PHP项目要用到分类,但不确认是4级还是需要用到5级,想着干脆做成无限级分类好了. 一开始想是按以前一样,数据库建4个值,如下: id: 自增   |   pid: 父类ID   |  xid: ...

  8. php无限级分类是什么意思,PHP 无限级分类(递归)

    网上有很多,这是我自己做测试用的 $arr = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name ...

  9. 无限级分类实现思路 (组织树的分级管理)

    2019独角兽企业重金招聘Python工程师标准>>> 关于该问题,暂时自己还没有深入研究,在网上找到几种解决方案,各有优缺点. 第一种方案: 使用递归算法,也是使用频率最多的,大部 ...

最新文章

  1. 智能路由器操作系统OpenWrt
  2. wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...
  3. html层次选择器例题,JQuery 层次选择器的例子
  4. AUTOSAR从入门到精通100讲(二十一)-AUTOSAR通信篇—IpduM模块
  5. 通过ajax提交到url路由
  6. 字节跳动宣布取消大小周;淘宝、支付宝等阿里系App取消开屏广告;Python 3.10 beta 4 发布|极客头条...
  7. od拦截消息 comboboxonchange_某聊天软件逆向之偷看消息不quot;已读quot;
  8. html ajax请求乱码,关于Ajax请求中传输中文乱码问题的解决方案
  9. android ssh软件,优秀的 Android SSH 工具推荐
  10. 硬件产品的成本构成——研发、产品边际成本和服务
  11. 学电力好还是计算机好,毕业后想进电力系统上班?这三个专业可优先考虑
  12. python解密sg11加密_linux下kangle的php安装sourceguardian SG11加密解密扩展
  13. python实现英文新闻摘要自动提取_利用Python实现摘要自动提取,完美瘦身只需一行代码...
  14. 生死大PK:软路由是否会威胁到硬路由
  15. Zero-Shot相关论文阅读报告
  16. 这6个编程语言排行榜,据说全都知道的人不足1% | 年终榜单大盘点
  17. 初试傲游浏览器/Maxthon3,4大惊喜,1点遗憾
  18. 1——从IOP思想开始
  19. Jasperreport_6.18的回血终结篇之案例目录、封面
  20. 2022CoCa: Contrastive Captioners are Image-Text Fountion Models

热门文章

  1. mset redis_redis mset string 命令简介
  2. python搜索关键词自动提交_python+selenium实现自动化百度搜索关键词
  3. android+mms发送流程,mms发送流程代码版droid.docx
  4. C# List集合求交集
  5. 记录一次和朋友聊天遇到的面试题 ip地址字符串和long类型的相互转换 都是参考了别人的代码 加了一些个人理解的总结
  6. 中国已与36个国家(地区)海关实现“经认证的经营者”(AEO)互认
  7. LINQ-to-SQL那点事~LINQ-to-SQL中的并发冲突与应对
  8. 网宿科技:向云服务商转型
  9. 程序中减少使用if语句的方法集锦
  10. linux shell 特殊符号的表示