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 相关文章推荐
PHP 身份验证方面的函数
Oct 11 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
Jun 16 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP is_subclass_of函数的一个BUG和解决方法
Jun 01 PHP
php生成随机数的三种方法
Sep 10 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
PDO::inTransaction讲解
Jan 28 PHP
PHP+redis实现的购物车单例类示例
Feb 02 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
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
JavaScript实现拖拽功能
2020/02/11 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
python通过zabbix api获取主机
2018/09/17 Python
python使用多进程的实例详解
2018/09/19 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python交易记录链的实现过程详解
2019/07/03 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
高三毕业典礼主持词
2014/03/27 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
安全保证书怎么写
2015/02/28 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
创业计划书之美甲店
2019/09/20 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL