2013-10-15 22 views
0

如何生成JSON響應jqtree與PHP?我已經嘗試使用json_encode,但是它留下了很多額外的數據。我想知道是否有人強迫這扇門。jqtree JSON數據與PHP和MySQL

如何實現這樣的結構:

var data = [ 
    { 
     label: 'node1', 
     children: [ 
      { label: 'child1' }, 
      { label: 'child2' } 
     ] 
    }, 
    { 
     label: 'node2', 
     children: [ 
     { label: 'child3' } 
     ] 
    } 
]; 

形式mysql的ID,家長,拉布勒結構?

任何幫助將理解

+1

這不是有效的JSON。 –

+0

節點和chilidren之間的關係是什麼? –

+0

是的,這不是JSON,但不幸的是這是格式。 如果我們認爲id,parent,lable是db中的列,則關係是「node1」,「node2」是lable列和child1的值,child2是具有「node1」作爲父列的行。我想知道如果有人已經寫了支持這個混亂的東西。 –

回答

1

在JSON字符串「額外數據」是由於json_encode和關聯數組。 如果你嘗試json_encode和索引數組,你會得到一個如此不同的json字符串,沒有那個'標籤'。

但是,jqtree需要一個混合json,帶有一些'string'鍵和一些'index'鍵。

然後,對於獲得有效的JSON jqtree在PHP中,你應該使用下面的函數來你所得到的來自查詢陣列,並做了json_encode之後到數組這個函數返回:

function arrayValuesRecursive($array) 
    { 
     $temp = array(); 
     foreach ($array as $key => $value) { 
      if (is_numeric($key)) { 
       $temp[] = is_array($value) ? arrayValuesRecursive($value) : $value; 
      } else { 
       $temp[$key] = is_array($value) ? arrayValuesRecursive($value) : $value; 
      } 
     } 

     return $temp; 
    } 

對於例如:

$arrayFromQuery = array(...); 
$arrayFromQuery = arrayValuesRecursive($arrayFromQuery); 
$jqTreeJSON = json_encode($arrayFromQuery);