无限级分类及生成json数据
第一步,先去数据库查询类别数据,然后交给生成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数据的更多相关文章
- 生成JSON数据--fastjson(阿里)方法
fastjson(阿里)方法生成JSON数据: 与Gson类似,创建相应类,再使用JSON.toJSONString()添加对象 要求:生成如下JSON数据 1.{"age":3, ...
- 生成JSON数据--Gson(谷歌)方法
Gson生成JSON数据方法: 创建相应的类,然后创建对象,toJson()进去就可以了 要求:生成如下JSON数据 1.{"age":4,"name":&qu ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- servlet生成json数据返回至Ajax
一.JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标 ...
- ASP生成JSON数据
原文地址为:ASP生成JSON数据 < %@LANGUAGE = " VBSCRIPT " CODEPAGE = " 65001 " % > ...
- C#生成JSON数据
protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.ContentType = &quo ...
- c# 生成json数据包
json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...
- 生成 JSON 数据
//build an info object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsA ...
- 在SQL 中生成JSON数据
这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...
随机推荐
- Linux 系统 LVM(Logical Volume Manager)逻辑卷管理
一.前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到 当前某个分区需要的容量,还要预见该分区以后可能需要 ...
- 南阳OJ 61 传纸条(一)
传纸条(一) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...
- What’s that ALUA exactly?
What’s that ALUA exactly? 29 September, 20098 Comments Of course by now we have all read the excelle ...
- Fiddler2 模拟文件上传
最近遇到一个需求,需要上传音频文件, 服务端使用webService 通过spring3 进行文件上传.代码完成后使用 html 通过post 方式请求接口成功了,但不知道如何使用Fiddler2工具 ...
- selenium自动化浏览器后台运行headless模式
通过selenium做WEB自动化的时候,必须要启动浏览器, 浏览器的启动与关闭会影响执行效率. 当我们在自己电脑运行代码时,还会影响做别的事情. 鉴于这种情况,Google针对Chrome浏览器新增 ...
- 1120 Friend Numbers
题意:略. 思路:水题,略. 代码: #include <iostream> #include <string> using namespace std; ; }; int m ...
- 如何正确且成功破解跨平台数据库管理工具DbVisualizer?(图文详解)
前期博客 基于JDBC的跨平台数据库管理工具DbVisualizer安装步骤(图文详解)(博主推荐) 上图,所示,说明这个还只是免费版而已,没又破解为Pro版本. 接下来,就是带领大家如何正确且成功破 ...
- 【DevExpress】1、SearchLookUpEdit详解
一.属性的基本介绍: 绑定数据源: lookUpEdit.Properties.ValueMember = 实际要用的字段; //相当于Editvalue lookUpEdit.Propertie ...
- Cygwin windows10上安装出现系列问题及解决方法
问题1描述: 发现vim不好使,Backspace键只是前移,不能删除,按方向键更是按出ABCD来. 解决方法: $ cp /usr/share/vim/vim73/vimrc_example.v ...
- Git第三方仓库安装方式(IUS)
1.安装使用里面说的自动化安装脚本 curl https://setup.ius.io | sh 2.然后可以看到 git2u相关内容 yum search git 3.执行安装,并查看下版本 yum ...