我读了很多关于SO的答案,但我不知道如何让它们解决我的问题。
这就是我所拥有的:
{
"name": "My Company LLC ->",
"children": [
{
"name": "District of the Stores",
"children": [
{
"name": "johnny1"
},
{
"name": "jonny2"
}
]
}, //I don't want my array to end here
{
"name": "store number 10",
"children": [
{
"name": "johnny3"
},
{
"name": "jonny4"
}
]
}
]
}
这就是我想要的。
{
"name": "My Company LLC ->",
"children": [
{
"name": "District of the Stores",
"children": [
{
"name": "johnny1"
},
{
"name": "jonny2"
},
{
"name": "store number 10",
"children": [
{
"name": "johnny3"
},
{
"name": "jonny4"
}
]
}
]
}
]
}
以下是我尝试使用的:
$name=array('name'=>'My Company LLC ->');
$name['children']=array(array('name'=>'District of the Stores', 'children'=>array(array('name'=>'johnny1'), array('name'=>'jonny2'))));
$name['children'][]=array('name'=>'store number 10', 'children'=>array(array('name'=>'johnny3'), array('name'=>'jonny4')));
echo '<pre>';
echo json_encode($name, JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);
echo '</pre>';
我知道我在子数组的末尾插入了一个数组,这导致了第一个例子中的第二个数组问题,但我不知道如何将第二个子数组放回原始数组中的第一个。这是数据库中一个大列表的一部分,但我被困在这里了。我看不出我找到的SO答案在哪里可以帮助我插入第二个数组。
看起来你想要这个:
$name['children'][0]['children'][] = array(...);
这将引用根元素的第一个子元素(索引0
(,然后像以前一样继续操作,将children
数组添加到该元素中。
$name=array('name'=>'My Company LLC ->');
$name['children']=array(array('name'=>'District of the Stores', 'children'=>array(array('name'=>'johnny1'), array('name'=>'jonny2'), array('name'=>'store number 10', 'children'=>array(array('name'=>'johnny3'), array('name'=>'johnny4'))))));
echo '<pre>';
echo json_encode($name, JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);
echo '</pre>';
这是输出
{
"name": "My Company LLC ->",
"children": [
{
"name": "District of the Stores",
"children": [
{
"name": "johnny1"
},
{
"name": "jonny2"
},
{
"name": "store number 10",
"children": [
{
"name": "johnny3"
},
{
"name": "johnny4"
}
]
}
]
}
]
}
如果你想把代码行分开,你可以做以下操作:
$name=array('name'=>'My Company LLC ->');
$name['children']=array(array('name'=>'District of the Stores', 'children'=>array(array('name'=>'johnny1'), array('name'=>'jonny2'))));
$name['children'][0]['children'][] = array('name'=>'store number 10', 'children'=>array(array('name'=>'johnny3'), array('name'=>'johnny4')));
echo '<pre>';
echo json_encode($name, JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);
echo '</pre>';
此外,通过查看数组而不是编码为json来调试这类事情可能会容易得多。这是作为数组的原始输出,它确实向您展示了正在进行的更好的操作。
$name=array('name'=>'My Company LLC ->');
$name['children']=array(array('name'=>'District of the Stores', 'children'=>array(array('name'=>'johnny1'), array('name'=>'jonny2'))));
$name['children'][]=array('name'=>'store number 10', 'children'=>array(array('name'=>'johnny3'), array('name'=>'jonny4')));
echo '<pre>';
print_r($name);
echo '</pre>';
输出为:
Array
(
[name] => My Company LLC ->
[children] => Array
(
[0] => Array
(
[name] => District of the Stores
[children] => Array
(
[0] => Array
(
[name] => johnny1
)
[1] => Array
(
[name] => jonny2
)
)
)
[1] => Array
(
[name] => store number 10
[children] => Array
(
[0] => Array
(
[name] => johnny3
)
[1] => Array
(
[name] => jonny4
)
)
)
)
)