thinkphp5框架实现数据库读取的数据转换成json格式示例


Posted in PHP onOctober 10, 2019

本文实例讲述了thinkphp5框架实现数据库读取的数据转换成json格式。分享给大家供大家参考,具体如下:

首先从数据库读数据,然后调用list_to_tree方法,再调用findchild方法,最后输出

$category = DB::name('Category');
$category_list = $category->select();
$data=$this->list_to_tree($category_list,'category_id','category_parent_id','children'); //调用下面的方法
$data=$this->findChild($data);
header('Content-Type:application/json; charset=utf-8');
exit(json_encode($data,JSON_UNESCAPED_UNICODE));
// return $this->fetch('index');
$this->ajaxReturn($data, 'JSON');

下面是两个方法:

function findChild($arr){
    static $tree=array();
    foreach ($arr as $key=>$val){
        $tree[]=$val;
        if (isset($val['_child'])){
          $this->findChild($val['_child']);
        }
      }
  return $tree;
  }
  /**
   * 把返回的数据集转换成Tree
   * @access public
   * @param array $list 要转换的数据集
   * @param string $pid parent标记字段
   * @param string $level level标记字段
   * @return array
   */
  function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
    // 创建Tree
    $tree = array();
    if(is_array($list)) {
    // 创建基于主键的数组引用
    $refer = array();
    foreach ($list as $key => $data) {
      $refer[$data[$pk]] =& $list[$key];
    }
    foreach ($list as $key => $data) {
      // 判断是否存在parent
      $parentId = $data[$pid];
      if ($root == $parentId) {
      $tree[] =& $list[$key];
      }else{
      if (isset($refer[$parentId])) {
        $parent =& $refer[$parentId];
        $parent[$child][] =& $list[$key];
      }
      }
    }
    }
    return $tree;
  }

转换之前的数据,直接从数据库读取,不能使用:

thinkphp5框架实现数据库读取的数据转换成json格式示例

转换之后的数据,可以被ztree树插件直接使用的json格式:

thinkphp5框架实现数据库读取的数据转换成json格式示例

PHP 相关文章推荐
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
php at(@)符号的用法简介
Jul 11 PHP
php 调用远程url的六种方法小结
Nov 02 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
php简单图像创建入门实例
Jun 10 PHP
iOS10推送通知开发教程
Sep 19 PHP
PHP常用的三种设计模式
Feb 17 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
解决php extension 加载顺序问题
Aug 16 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 PHP
在laravel中使用with实现动态添加where条件
Oct 10 #PHP
Laravel关系模型指定条件查询方法
Oct 10 #PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 #PHP
基于laravel where的高级使用方法
Oct 10 #PHP
laravel 实现设置时区的简单方法
Oct 10 #PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 #PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 #PHP
You might like
smarty内置函数capture用法分析
2015/01/22 PHP
PHP与以太坊交互详解
2018/08/24 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
vue登录注册实例详解
2019/09/14 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python的高级Git库 Gittle
2014/09/22 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
实习鉴定评语
2014/01/19 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
离婚财产分配协议书
2014/10/21 职场文书
公司管理制度范本
2015/08/03 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
HTTP中的Content-type详解
2022/01/18 HTML / CSS