0

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

如何实现这样的结构:

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

形成mysql id,父级,标签结构?

任何帮助将不胜感激

4

1 回答 1

1

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

但是,jqtree 需要一个混合的 json,带有一些“字符串”键和一些“索引”键。

然后,为了在 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);
于 2014-04-01T13:34:13.597 回答