2016-06-15 8 views
1

У меня есть этот PHP код для формирования иерархии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: { "имя": "Top Level", "родитель": "нуль", "дети": "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

Почему '' children '=> "$ arr" '?? Должен быть '' children '=> array ($ arr) 'или'' children '=> $ arr'. [Пример] (https://3v4l.org/ZSmu5) –

ответ

2

Вы должны remvoe кавычки Abour $arr

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

Когда вы "$arr", вы на самом деле преобразования $arr в строку. Вот почему у вас есть только Array строка в JSON.

Кроме того, я хотел бы предложить, чтобы изменить children свойство в $arr в пустой массив вместо пустой строки:

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

Это сделает ваш код последовательно, так как вы всегда будете иметь массив под children собственности.

Смежные вопросы