1. 程式人生 > >php生成easyUI Tree要用到的json格式

php生成easyUI Tree要用到的json格式

<?php
/**
 * 由一個帶fid的陣列生成一個帶children的樹形陣列
 * 專為EasyUI的Tree的json格式設計
 * @author ljb
 *
 */
class BuildTreeArray
{
	private $idKey = 'id'; //主鍵的鍵名
	private $fidKey = 'fid'; //父ID的鍵名
	private $root = 0; //最頂層fid
	private $data = array(); //源資料
	private $treeArray = array(); //屬性陣列
	
	function __construct($data,$idKey,$fidKey,$root) {
		if($idKey) $this->idKey = $idKey;
		if($fidKey) $this->fidKey = $fidKey;
		if($root) $this->root = $root;
		if($data) {
			$this->data = $data;
			$this->getChildren($this->root);
		}
	}
	
	/**
	 * 獲得一個帶children的樹形陣列
	 * @return multitype:
	 */
	public function getTreeArray()
	{
		//去掉鍵名
		return array_values($this->treeArray);
	}
	
	/**
	 * @param int $root 父id值
	 * @return null or array
	 */
	private function getChildren($root)
	{
		foreach ($this->data as &$node){
			if($root == $node[$this->fidKey]){
				$node['children'] = $this->getChildren($node[$this->idKey]);
				$children[] = $node;
			}
			//只要一級節點
			if($this->root == $node[$this->fidKey]){
				$this->treeArray[$node[$this->idKey]] = $node;
			}
		}
		return $children;
	}
}
?>


Array
(
    [0] => Array
        (
            [id] => 1
            [fid] => 0
            [text] => 系統設定
            [nodeUrl] => Admin
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [fid] => 1
                            [text] => 系統角色管理
                            [nodeUrl] => Admin&m=Sys&a=manageRole
                            [children] => 
                        )

                    [1] => Array
                        (
                            [id] => 3
                            [fid] => 1
                            [text] => 系統選單管理
                            [nodeUrl] => Admin&m=Sys&a=manageNode
                            [children] => 
                        )

                    [2] => Array
                        (
                            [id] => 7
                            [fid] => 1
                            [text] => 使用者管理
                            [nodeUrl] => Admin&m=Sys&a=manageUser
                            [children] => 
                        )

                )

        )

    [1] => Array
        (
            [id] => 4
            [fid] => 0
            [text] => 筆記本
            [nodeUrl] => Admin
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [fid] => 4
                            [text] => 新增筆記
                            [nodeUrl] => Admin&m=LjbNote&a=saveNote
                            [children] => 
                        )

                    [1] => Array
                        (
                            [id] => 6
                            [fid] => 4
                            [text] => 筆記列表
                            [nodeUrl] => Admin&m=LjbNote
                            [children] => 
                        )

                    [2] => Array
                        (
                            [id] => 8
                            [fid] => 4
                            [text] => 管理分類
                            [nodeUrl] => Admin&m=LjbNote&a=manageType
                            [children] => 
                        )

                )

        )

)
//使用方法
		$data = doSql('SELECT nodeID id,fid,nodeName text FROM mytable');
		$bta = new BuildTreeArray($data,'id','fid',0);
		$data = $bta->getTreeArray();
		echo json_encode($data);



相關推薦

php生成easyUI Tree到的json格式

<?php /** * 由一個帶fid的陣列生成一個帶children的樹形陣列 * 專為EasyUI的Tree的json格式設計 * @author ljb * */ class BuildTreeArray { private $idKey = 'id

解決請求介面JSON格式請求後端的問題

一開始就跟平常一樣寫好介面就給前端。發現老是500方法進不來發現是請求頭Content-Type的問題導致的 相關知識: (1):我們預設使用的表單和Jquery預設的Ajax請求,Content-Type都是預設採用:application / x-www-form-urlenc

mysql欄位json格式,mybatis框架,傳前端格式轉意問題

a 前言 錯誤 解決 思考 前言 今天在實現點功能的時候,需要將mysql中的一個欄位型別設定為json,使用的框架是ssm,mybatis的逆向工程返回相應的欄位的型別是object,通過@responsebody註解傳

spring boot下使用logback或log4j生成符合Logstash標準的JSON格式

使用logback 1.引入logstash日誌格式支援 <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-enc

JS將後臺返回的JSON資料轉換成EasyUI Tree約定的格式

/**載入根節點樹狀圖*/ function loadParentId_add() { $.ajax({ url: ''與後臺互動的地址, success: function (data) { if (data.success) {

遞迴實現EasyUITreeJson格式

                   最近在做學校的基礎系統的時候前臺需要樹形的組織結構,由於前臺的整體框

PHP 生成複雜JSON格式 簡單快速方法

PHP 生成JSON 格式主要使用json_encode()函式。這個函式的輸入引數支援PHP陣列和物件型別。 查閱網上的例子通常都是使用陣列的,也有個別使用物件生成。但實際專案中,我們要生成的JSON格式往往比較複雜,有多層的巢狀,而且通常需要包含一個json根節點。在這

JSON.stringify()生成漂亮格式JSON字串

巧用JSON.stringify()生成漂亮格式的JSON字串 使用JavaScript處理XML基本上就是一個杯具,這也是JSON在程式開發中廣受歡迎的原因。我曾經寫過一個 JavaScript函式來將XML轉換為JSON,那種~duang~duang~的痛

PHPjson_encode()將數組裡面帶有中文的字串保留以JSON格式返回

當我們用PHPjson_encode()就會發現用這個函式後數組裡面的中文也轉為unicode,但是有時候我們想保留裡面的中文顯示,這就需要我們去寫一些函式去實現這一功能,但之前上網找了一些相關的資料但效果都不是很好,

easyui tree 的非同步載入 前臺的編寫方法和後臺的json資料格式組裝方法

這是本人第一個技術文章,首先宣告,我其實是一個菜鳥 ,工作也才不到三個月,從認識java到現在也才剛剛一年。 寫這篇文章呢,也主要是為了把自己的心得記錄下來,也為了以後可以翻閱。 同時也希望可以分享出來與大家一起探討。 寫的不好,請輕噴,有什麼不對的地方,指出來大家一起探討

原始方法解析復雜字符串,json一定JsonMapper麽?

之間 正則表達式 isn ces plain cli shu 如何解決 clist 轉自數據之巔原文用原始方法解析復雜字符串,json一定要用JsonMapper麽? 閱讀目錄 1.不規則非json字符串 2.鍵值對字符串分割函數 3.復雜Json格式

使用JSONObject類來生成json格式的數據

bsp src nbsp blog ges bean .cn map 對象 使用map構建json格式的數據 使用java bean來構建json對象 使用JSONObject類來生成json格式的數據

在VS2013下編譯json-c庫,並簡單生成json格式數據

ray string 數組 ring std bject sub obj ++ #include "stdafx.h"#include "json-c/json.h" int _tmain(int argc, _TCHAR* argv[]){ // 正常的json格式 js

Ajax中的JSON格式php傳輸過程的淺析

resp 我們 cti val ati 裏的 class xhr sta   在Ajax中的JSON格式與php傳輸過程中有哪些要註意的小地方呢?   先來看一下簡單通用的JSON與php傳輸數據的代碼 HTML文件: <input type="button"

PHP記錄和讀取JSON格式日誌文件

contents 日誌文件 轉換 ret abs 轉換成 情況 查找 $max 我們有時需要記錄用戶或者後端的某個操作事件的運行情況,可以使用後端語言如PHP將操作結果記錄到日誌文件中,方便測試和查找問題。尤其是這些在後端運行的而前端不能直接看到運行結果的,那麽就可以用日誌

JS和PHP之間以JSON格式傳輸

ray nbsp 單例 補充 接收 文本 語言 ext tex Json是一種的輕量級文本數據交換格式。它獨立於編程語言,可以用於在不用的編程語言之間進行數據的交互。 下面簡單例舉二個使用JSON進行數據通信的例子。 第一個例子: //Javascript以ajax發送數

iOS開發之JSON格式數據的生成與解析

添加 json intern 對象 RM use convert mail value 我們為什麽要用JSON格式的數據? JSON格式取代了xml給網絡傳輸帶來了很大的便利,但是卻沒有了xml的一目了然,尤其是json數據很長的時候,我們會陷入繁瑣復雜的數據節點查找中。

Web傳輸,前臺的參數數據量過大[json格式的字符串],可能達到幾M,ajax調後臺方法時

reads time size 大小 direct red pre 傳值 調用 eb傳輸,前臺的參數數據量過大【json格式的字符串】,可能達到幾M,ajax調用後臺方法時,無法傳遞問題分析:tomcat上默認post提交大小為2M,左右,超過這個大小了,就會傳值不成功解決

eclipse 自動生成json格式的toString()方法

ring string com image other 分享圖片 自動 code The 文本代碼 {"${member.name()}":"${member.value}", "${otherMembers}"} eclipse 自動生成json格式的t

通過AJAX傳遞JSON格式php後臺

con lse state object input head pos ech amp js部分 b.js if(window.XMLHttpRequest){ xhr=new XMLHttpRequest(); }else{ xhr=new ActiveXObject