第一步,先去数据库查询类别数据,然后交给生成json数据的函数处理,代码如下:

1 /*生成类别JSON数据*/
2     public function wirteJson(){
3         $dataInfo = \think\Db::query("select id as v,name as n,pid from think_pro_category");
4         $data = $this->getCategoryJson($dataInfo);
5         return $data;
6     }

第二步,将查询出来的类别数据重新归类排序,代码如下:

 1 /**
 2  *处理分类数组
 3 **/
 4 function generateTree($items) {
 5     $tree = array();
 6     foreach($items as $item){
 7         if(isset($items[$item['pid']])){
 8             $items[$item['pid']]['s'][] = &$items[$item['v']];
 9         }else{
10             $tree[] = &$items[$item['v']];
11         }
12     }
13     return $tree;
14 }

第三步,生成json数据,并返回数据,代码如下:

 1 /**
 2      * 功能:无限级类别json数据生成
 3      * 参数:$data 类别查询结果集
 4      * 返回值:$json 递归查询排序后的json数据
 5      */
 6     public function getCategoryJson($dataInfo) {
 7         /*生成json数据*/
 8         foreach($dataInfo as $category) {
 9             $tree[$category['v']] = $category;
10             $tree[$category['v']]['s'] = array();
11         }
12         $content = json_encode(generateTree($tree));
13         $content = str_replace(',"s":[]', "", $content);
14         // for( $i = 0; $i < count($dataInfo); $i++ ) {
15         //     $content = str_replace('"'.$dataInfo[$i]['v'].'":', "", $content);
16         // }
17         //$content = '['.substr($content,1,strlen($content)-2).']';
18         //return $content;
19         /*写入文件*/
20         //文件存放路径
21         $filePath = $_SERVER['DOCUMENT_ROOT'].DS.'/category/category.json';
22         $returnval = file_put_contents($filePath,$content);
23         // $fopen = fopen($filePath,'w+');
24         // fwrite($fopen,$content);
25         // fclose($fopen);
26         return $returnval;
27     }

转载于:https://www.cnblogs.com/walblog/p/8005333.html

无限级分类及生成json数据相关推荐

  1. 生成JSON数据--fastjson(阿里)方法

    fastjson(阿里)方法生成JSON数据: 与Gson类似,创建相应类,再使用JSON.toJSONString()添加对象 要求:生成如下JSON数据 1.{"age":3, ...

  2. 生成JSON数据--Gson(谷歌)方法

    Gson生成JSON数据方法: 创建相应的类,然后创建对象,toJson()进去就可以了 要求:生成如下JSON数据 1.{"age":4,"name":&qu ...

  3. mysql数据库生成json_Python3实现 将MySQL数据库中的记录生成JSON数据

    思路:首先连接MYSQL数据库,将查询到的数据存放到字典中,然年将每个组装好的字典放到List中 调用json.dumps(jsonData, ensure_ascii=False)方法,生成JSON ...

  4. ASP生成JSON数据

    原文地址为: ASP生成JSON数据 < %@LANGUAGE = " VBSCRIPT "  CODEPAGE = " 65001 " % > & ...

  5. java 生成json数据_解析和生成JSON数据

    JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值.它对外部(External: 应用toString()方法输出的数值)调 ...

  6. 生成JSON数据--官方方法

    官方生成方法: 1)需要什么就给什么,要属性就给属性,要对象就给对象,要集合就给集合2)添加都是使用put()方法 要求: 1.生成如下JSON数据: {"age":4," ...

  7. mysql 动态sql 解析json数据_在SQL 中生成JSON数据

    这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...

  8. java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串

    文章目录 1. 详说json 1.1 何为json 1.2 json语法 2. Java解析与生成JSON的四种方式 2.1 传统方式 2.2 利用Jackson方式 2.3 利用Gson方式 2.4 ...

  9. asp.net怎么生成json数据_mysql数据库配置文件不知道怎么配置?用这个工具一键生成...

    概述 作为DBA或系统运维人员在安装或配置mysql的过程中,经常遇到mysql的配置文件参数不知如何设置?哪些参数需要设置?参数值设置为多少比较合理.下面分享一个老叶的在线生成mysql的生成器. ...

最新文章

  1. windows10 python调用wsl_(亲测!)Windows10用WSL安装Ubuntu远程桌面连接和配置开发环境...
  2. POJ1741 Tree(树分治——点分治)题解
  3. spark ui的访问地址_Spark篇之HA集群搭建
  4. linux安装mysql5.6.14_(四)Zabbix_linux安装mysql5.6
  5. php explode txt,PHP explode():字符串转数组
  6. java中自动装箱的问题
  7. Spring Boot————简介与Spring时代的承接
  8. iOS:重识Transform和frame
  9. GBaseDataStudio管理工具
  10. 完整的蓝屏错误代码大全详解
  11. TV版应用包名 TV常用apk包名 (当贝市场下载)
  12. 0033【MySQL】Mysql备份导入异常:@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty
  13. 高德地图ios11 定位失败
  14. 嘉腾发布“守护者I”抗疫机器人
  15. 分类模型中准确率、敏感度、特异度的理解
  16. SAP ABAP ZBA_R001 查询用户下的角色,事务代码
  17. 书单 | 双十一薅当当羊毛4折囤书攻略
  18. 【将数组a中n个整数按相反顺序存放】
  19. zookeeper从基础到精通
  20. 从 Server Timing Header 看服务器是如何处理请求的

热门文章

  1. bios设置 联想m8000t_怎么进bios设置硬盘启动顺序
  2. friendly发音_friendly是什么意思_friendly怎么读_friendly翻译_用法_发音_词组_同反义词_友好的_亲密的-新东方在线英语词典...
  3. SpringMVC教程上篇
  4. python安装lap_一个python脚本解决安装mq的依赖问题
  5. c语言中O空字符,OC语言中字符串的使用
  6. k3 审核流程图_K3操作流程图
  7. 基于Java+SpringBoot+vue+element等动物救助平台设计和实现
  8. linux utmp结构体,Linux C编程如何使用联机帮助来解决编程问题?
  9. TOPSIS与模糊Borda 的组合应用(以第二届大湾区杯和国赛为案例)
  10. 白话(whitening)