在php中的Json数组作为树格式

时间:2016-06-15 09:42:22

标签: php arrays json

我有这个PHP代码来构成层次结构

    $arr = array(
    'name' => "Level 2: A",
    'parent' => "Top Level",
    'children' => ""
);

$arr2 = array(
    'name' => "Top Level",
    'parent' => "null",
    'children' => "$arr"
);

echo json_encode($arr2);

但我无法访问JSON输出中的数组。

JSON的MY输出:{“name”:“Top Level”,“parent”:“null”,“children”:“Array”}

我的目标是创建一个这样的数组但是使用JSON但它返回array而不是array

中的数据
var treeData = [
{
"name": "Top Level",
"parent": "null",
"children": [
  {
     "name": "Level 2: A",
     "parent": "Top Level",
     "children": [
      {
        "name": "Son of A",
        "parent": "Level 2: A"
      },
      {
        "name": "Daughter of A",
        "parent": "Level 2: A"
      }
    ]
  },
  {
    "name": "Level 2: B",
    "parent": "Top Level"
  }
]

} ];

1 个答案:

答案 0 :(得分:2)

你必须使用引用$arr

$arr2 = array(
    'name' => "Top Level",
    'parent' => "null",
    'children' => $arr // <- remove quotes here
);

执行"$arr"时,您实际上是将$arr转换为字符串。这就是为什么你在JSON中只有Array字符串。

此外,我建议将children中的$arr属性更改为空数组而不是空字符串:

$arr = array(
    'name' => "Level 2: A",
    'parent' => "Top Level",
    'children' => array() // <- here
);

这将使您的代码保持一致,因为您将始终在children属性下拥有一个数组。