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 03 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
php一个解析字符串排列数组的方法
May 12 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
php swoft框架实例用法
Dec 22 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
Python中实现的RC4算法
2015/02/14 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Python箱型图处理离群点的例子
2019/12/09 Python
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
机械专业应届生求职信
2013/12/12 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
员工手册编写范本
2015/05/14 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS