php教程

超轻量级php框架startmvc

thinkphp5框架实现数据库读取的数据转换成json格式示例

更新时间:2020-04-10 00:37:46 作者:startmvc
本文实例讲述了thinkphp5框架实现数据库读取的数据转换成json格式。分享给大家供大家参考

本文实例讲述了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;
 }

转换之前的数据,直接从数据库读取,不能使用:

转换之后的数据,可以被ztree树插件直接使用的json格式:

PS:这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具: http://tools.jb51.net/code/json

JSON在线格式化工具: http://tools.jb51.net/code/jsonformat

在线XML/JSON互相转换工具: http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具: http://tools.jb51.net/code/jsoncodeformat

thinkphp5 数据 转换 json格式