2013-10-15 24 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);