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

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

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

 /**
*处理分类数组
**/
function generateTree($items) {
$tree = array();
foreach($items as $item){
if(isset($items[$item['pid']])){
$items[$item['pid']]['s'][] = &$items[$item['v']];
}else{
$tree[] = &$items[$item['v']];
}
}
return $tree;
}

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

 /**
* 功能:无限级类别json数据生成
* 参数:$data 类别查询结果集
* 返回值:$json 递归查询排序后的json数据
*/
public function getCategoryJson($dataInfo) {
/*生成json数据*/
foreach($dataInfo as $category) {
$tree[$category['v']] = $category;
$tree[$category['v']]['s'] = array();
}
$content = json_encode(generateTree($tree));
$content = str_replace(',"s":[]', "", $content);
// for( $i = 0; $i < count($dataInfo); $i++ ) {
// $content = str_replace('"'.$dataInfo[$i]['v'].'":', "", $content);
// }
//$content = '['.substr($content,1,strlen($content)-2).']';
//return $content;
/*写入文件*/
//文件存放路径
$filePath = $_SERVER['DOCUMENT_ROOT'].DS.'/category/category.json';
$returnval = file_put_contents($filePath,$content);
// $fopen = fopen($filePath,'w+');
// fwrite($fopen,$content);
// fclose($fopen);
return $returnval;
}

无限级分类及生成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. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  4. servlet生成json数据返回至Ajax

    一.JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标 ...

  5. ASP生成JSON数据

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

  6. C#生成JSON数据

    protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.ContentType = &quo ...

  7. c# 生成json数据包

    json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...

  8. 生成 JSON 数据

    //build an info object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsA ...

  9. 在SQL 中生成JSON数据

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

随机推荐

  1. Maven项目中突然找不到Build Path或maven dependencies library

    这两天发现有个maven项目抽风了,一个是右击项目找不到Build Path了,一个是依赖的lib库没了,maven引入的依赖包导不了.后来发现是eclipse搞的鬼,出问题的是项目下的.classp ...

  2. 重装系统, i tell you

    博客网站: https://blog.csdn.net/ca1m0921/article/details/79313050 装机例子1: http://www.xitongcheng.com/jiao ...

  3. vs2003属性窗口空白的问题

    一个困扰很久的问题一直没有解决,因为vs的属性窗口没显示不方便修改mfc程序的id和属性等等,但是可以直接在代码里修改.问题始终是问题,最近准备画时间解决之,上网差资料搜索办法,一帖说是win7的问题 ...

  4. EM64T和64位是不是一个概念啊?他们有什么区别啊,怎么区分啊?

    首先我们要解决什么是64位这个问题.究竟什么是64位处理器呢?64 bit是相对于32 Bit而言的,这个位数指的是CPU GPRs(General-Purpose Registers,通用寄存器)数 ...

  5. setTimeout传参

    unction test(s) { alert(s); } window.setTimeout(function(){test('str');},1000); 这样就可以了...为什么是这样呢.因为s ...

  6. jenkins使用HTML Publisher Plugin插件 拉取报告样式缺失问题解决

    ---------------------------------------------------------临时解决方案----亲测ok 要解决该问题,方式也比较简单,就是修改Content S ...

  7. ES之一:Elasticsearch6.4 windows安装 head插件ik分词插件安装

    准备安装目标:1.Elasticsearch6.42.head插件3.ik分词插件 第一步:安装Elasticsearch6.4 下载方式:1.官网下载 https://www.elastic.co/ ...

  8. oracle11.2 安装

    win10安装oracle 11g 时出现INS-13001环境不满足最低要求 oracle在win10上安装教程

  9. WP8.1通过StreamSocket连接C++服务器

    注:当服务端和手机模拟器运行在一台机器时,会有奇怪错误.将服务端放在其它机器上更改客户端连接地址,运行正常.或者直接用本机modern调试也可以. 实例化一个对象 StreamSocket clien ...

  10. Maven Assembly打包提示[WARNING] transitive dependencies if any will not be available

    maven assembly打包出现错误 [WARNING] The POM for com.flink.xxr:0.0.1-SNAPSHOT is invalid, transitive depen ...