我有一个包含大约 300 个项目的数组。每个项目有 5 个属性。有些项目有一个父项目。嵌套项目需要能够扩展到无限嵌套。
我需要组织数组,以便所有具有父项的项都在父项children
属性内。将child
有children
我可以创建一个关联数组来创建前 2 个级别。最上面的父项和它的子项。
现在,当我尝试创建无限嵌套时,我的问题就来了。我看不到一种方法可以自动创建一种方法来适应多个嵌套级别并将信息放在应该嵌套的位置。
我从来没有建立过这样的树,性能是至关重要的。谁能指导我如何实现我打算实现的目标?我真的很感激
编辑:我的问题是如果我必须使用递归,而不是如何将我刚刚完成的内容拆分为 1 个单独的方法。
$tree = array();
/*
* $three = array( array( 'id','parent_id','displayAs', 'children' ) )
*/
foreach ( $taxonomyFullList as $firstLevel ) {
// Get all
if( (int)$firstLevel['parent_id'] == 0 ) {
$tree[] = array(
'id' => $firstLevel['id'],
'parent_id' => $firstLevel['parent_id'],
'displayAs' => $firstLevel['displayAs'],
'type' => $firstLevel['type'],
'children' => array()
);
$key = array_search( $firstLevel,$taxonomyFullList );
unset( $taxonomyFullList[$key] );
}
}
foreach ( $taxonomyFullList as $secondLevel ) {
foreach ( $tree as $firstTreeLevel ) {
if( (int)$secondLevel['parent_id'] === (int)$firstTreeLevel['id'] ) {
$newArray = array(
'id' => $secondLevel['id'],
'parent_id' => $secondLevel['parent_id'],
'displayAs' => $secondLevel['displayAs'],
'type' => $secondLevel['type'],
'children' => array()
);
$key = array_search( $firstTreeLevel, $tree );
array_push( $tree[$key]['children'], $newArray );
$taxonomyFullListKey = array_search( $secondLevel,$taxonomyFullList );
unset( $taxonomyFullList[$taxonomyFullListKey] );
}
}
}