通过数组重新循环(PHP)
我有一个奇怪的数组。我得到一些有子对象的对象,然后我得到一些作为子对象id的对象通过数组重新循环(PHP),php,arrays,foreach,Php,Arrays,Foreach,我有一个奇怪的数组。我得到一些有子对象的对象,然后我得到一些作为子对象id的对象 array { "1": { "children": [ 10, 11, ], "parent_id": null, } } "2": { "children": [ 12, 13, ] "parent_id": null, } "10": { "name": Tom,
array {
"1": {
"children": [
10,
11,
],
"parent_id": null,
}
}
"2": {
"children": [
12,
13,
]
"parent_id": null,
}
"10": {
"name": Tom,
"parentid": 1,
}
"11": {
"name": Peter,
"parentid": 1,
}
}
我试图首先通过foreach列出对象,如果它们有子对象
foreach ($array as $key) {
if (parent_id === null){
echo id;
}
}
所以我得到了一个如下的列表:
1
2
1
Tom
Peter
2
(第10号和第11号)
但是现在我想做的是列出他们父母下孩子的名字,所以它的结尾是这样的:
1
2
1
Tom
Peter
2
我有一个子ID的数组,我只是不知道如何在原始数组中重新查找名称 将假定您的数组有一层深,父元素id==null表示父元素,并且不可能显示孤立元素:
foreach($array as $key => $value) {
if ($value['parent_id'] === null) {
echo $key;
// we got a parent, iterate through it's children
foreach($value['children'] as $childId) {
echo $array[$childId]['name'];
}
}
}
可能需要添加一些检查,以确保数组中存在所有键。数组是否始终只有一个继承级别?即父母/子女?或者它会有祖父母/父母/孩子或曾祖父母/祖父母/父母/孩子等吗?是的,只有一个级别。