使用php和mysql的jqtree json数据

时间:2013-10-15 12:45:18

标签: php jquery mysql json jqtree

如何使用php生成jqtree的json响应?我尝试过json_encode,但它留下了很多额外的数据。我想知道是否有人已经强迫这扇门。

如何实现这样的结构:

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

形成mysql id,parent,lable结构?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

"额外数据"在json字符串中是由于json_encode和关联数组。 如果您尝试使用json_encode和索引数组,您将获得一个如此不同的json字符串,而没有'标签'。

然而,jqtree需要一个混合的json,一些' string'键和一些索引'密钥。

然后,为了在PHP中获取jqtree的有效json,你应该从查询中使用以下函数来生成数组,并在对数组执行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);