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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
用来给图片加水印的PHP类
Apr 09 PHP
php下把数组保存为文件格式的实例应用
Feb 08 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
php使用百度ping服务代码实例
Jun 19 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
round robin权重轮循算法php实现代码
May 28 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
js常见表单应用技巧
2008/01/09 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
浅谈Python数据类型之间的转换
2016/06/08 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
国际商务系学生个人的自我评价
2013/11/26 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js