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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
PHP单态模式简单用法示例
Nov 16 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
浅析PHP echo 和 print 语句
Jun 30 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
JS实现self的resend
2010/07/22 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
python实现二维插值的三维显示
2018/12/17 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
使用Python实现牛顿法求极值
2020/02/10 Python
美国性感内衣店:Yandy
2018/06/12 全球购物
保密工作实施方案
2014/02/24 职场文书
施工安全标语
2014/06/07 职场文书
岗位职责说明书模板
2014/07/30 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python