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中关于普通表单多文件上传的处理方法
Mar 25 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
php简单统计中文个数的方法
Sep 30 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
php_pdo 预处理语句详解
Nov 21 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
php session的应用详细介绍
Mar 22 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 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
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
老生常谈Python进阶之装饰器
2017/05/11 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
Spy++的使用方法及下载教程
2021/01/29 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
党员的自我评价范文
2014/01/02 职场文书
上学迟到的检讨书
2014/01/11 职场文书
汇源肾宝广告词
2014/03/20 职场文书
妈妈活动方案
2014/08/15 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
个人先进材料范文
2014/12/30 职场文书
海上钢琴师观后感
2015/06/03 职场文书
银行资信证明
2015/06/17 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP