通过数组重新循环(PHP)

通过数组重新循环(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,

我有一个奇怪的数组。我得到一些有子对象的对象,然后我得到一些作为子对象id的对象

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'];
       }
   }
}

可能需要添加一些检查,以确保数组中存在所有键。

数组是否始终只有一个继承级别?即父母/子女?或者它会有祖父母/父母/孩子或曾祖父母/祖父母/父母/孩子等吗?是的,只有一个级别。