thinkphp5框架實(shí)現(xiàn)數(shù)據(jù)庫讀取的數(shù)據(jù)轉(zhuǎn)換成json格式示例
本文實(shí)例講述了thinkphp5框架實(shí)現(xiàn)數(shù)據(jù)庫讀取的數(shù)據(jù)轉(zhuǎn)換成json格式。分享給大家供大家參考,具體如下:
首先從數(shù)據(jù)庫讀數(shù)據(jù),然后調(diào)用list_to_tree方法,再調(diào)用findchild方法,最后輸出
$category = DB::name('Category'); $category_list = $category->select(); $data=$this->list_to_tree($category_list,'category_id','category_parent_id','children'); //調(diào)用下面的方法 $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');
下面是兩個(gè)方法:
function findChild($arr){ static $tree=array(); foreach ($arr as $key=>$val){ $tree[]=$val; if (isset($val['_child'])){ $this->findChild($val['_child']); } } return $tree; } /** * 把返回的數(shù)據(jù)集轉(zhuǎn)換成Tree * @access public * @param array $list 要轉(zhuǎn)換的數(shù)據(jù)集 * @param string $pid parent標(biāo)記字段 * @param string $level level標(biāo)記字段 * @return array */ function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) { // 創(chuàng)建Tree $tree = array(); if(is_array($list)) { // 創(chuàng)建基于主鍵的數(shù)組引用 $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; }
轉(zhuǎn)換之前的數(shù)據(jù),直接從數(shù)據(jù)庫讀取,不能使用:
轉(zhuǎn)換之后的數(shù)據(jù),可以被ztree樹插件直接使用的json格式:
PS:這里再為大家推薦幾款比較實(shí)用的json在線工具供大家參考使用:
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat
在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.jb51.net/code/jsoncodeformat
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP中json格式數(shù)據(jù)操作技巧匯總》、《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
- thinkphp5 + ajax 使用formdata提交數(shù)據(jù)(包括文件上傳) 后臺(tái)返回json完整實(shí)例
- 原生javascript的ajax請(qǐng)求及后臺(tái)PHP響應(yīng)操作示例
- php array 轉(zhuǎn)json及java 轉(zhuǎn)換 json數(shù)據(jù)格式操作示例
- php和js實(shí)現(xiàn)根據(jù)子網(wǎng)掩碼和ip計(jì)算子網(wǎng)功能示例
- php實(shí)現(xiàn)JWT(json web token)鑒權(quán)實(shí)例詳解
- PHP數(shù)組對(duì)象與Json轉(zhuǎn)換操作實(shí)例分析
- php+js實(shí)現(xiàn)的無刷新下載文件功能示例
- 基于canvasJS在PHP中制作動(dòng)態(tài)圖表
相關(guān)文章
Laravel項(xiàng)目中timeAgo字段語言轉(zhuǎn)換的改善方法示例
這篇文章主要給大家介紹了關(guān)于Laravel項(xiàng)目中timeAgo字段語言轉(zhuǎn)換的改善方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09php使用wangeditor實(shí)現(xiàn)富文本遇見問題及兩種解決方法
在?PowerShell?中使用?npm?install?命令時(shí),命令行解析器可能會(huì)將?@?符號(hào)解釋為特殊字符,導(dǎo)致出現(xiàn)錯(cuò)誤,遇到這樣的問題如何解決呢,下面通過本文介紹php使用wangeditor實(shí)現(xiàn)富文本-遇見問題,需要的朋友可以參考下2023-12-12destoon實(shí)現(xiàn)調(diào)用當(dāng)前欄目分類及子分類和三級(jí)分類的方法
這篇文章主要介紹了destoon實(shí)現(xiàn)調(diào)用當(dāng)前欄目分類及子分類和三級(jí)分類的方法,是destoon開發(fā)中非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-08-08PHP和javascript常用正則表達(dá)式及用法實(shí)例
這篇文章主要介紹了常用的PHP和javascript正則表達(dá)式及用法實(shí)例,精心收集的PHP和javascript正則表達(dá)式各10個(gè),需要的朋友可以參考下2014-07-07使用php+swoole對(duì)client數(shù)據(jù)實(shí)時(shí)更新(一)
這篇文章主要介紹了使用php+swoole對(duì)client數(shù)據(jù)實(shí)時(shí)更新(一) 的相關(guān)資料,需要的朋友可以參考下2016-01-01php設(shè)計(jì)模式之單例模式用法經(jīng)典示例分析
這篇文章主要介紹了php設(shè)計(jì)模式之單例模式用法,結(jié)合具體實(shí)例形式分析了php單例模式的概念、原理、定義及使用方法,需要的朋友可以參考下2019-09-09Zend Framework教程之Zend_Registry對(duì)象用法分析
這篇文章主要介紹了Zend Framework教程之Zend_Registry對(duì)象用法,結(jié)合實(shí)例形式分析了對(duì)象注冊(cè)表Zend_Registry的具體功能與相關(guān)使用技巧,需要的朋友可以參考下2016-03-03thinkPHP實(shí)現(xiàn)的驗(yàn)證碼登錄功能示例
這篇文章主要介紹了thinkPHP實(shí)現(xiàn)的驗(yàn)證碼登錄功能,結(jié)合實(shí)例形式分析了thinkPHP驗(yàn)證碼登陸驗(yàn)證功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10