2017-02-27 164 views
1

我有一个奇怪的数组。我得到一些有孩子的物体,然后我有一些物体是孩子们的身份。通过数组重新循环(PHP)

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 

(没有10和11)

但现在我想要做的是列表下的孩子的名字他们父母,所以它结束了这样的事情:

1 
    Tom 
    Peter 
2 

我有一个数组的儿童id,我只是不知道如何重新循环遍历原始数组的名称。

+0

数组是否总是只有一层继承?即父/子?还是会有祖父母/父母/孩子或曾祖父母/祖父母/父母/孩子等? – fubar

+0

是的,只有一个级别。 –

回答

1

会假设你的数组是一个层次深,一个parent_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']; 
     } 
    } 
} 

可能要添加一些empty检查,只是为了确保所有键存在于数组中。