약 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]);
}
}
}
내가 그 물건을 할 것 같아요/8840319/build-a-tree-from-a-flat-array-in-php? rq = 1 –