>백엔드 개발 >PHP 튜토리얼 >배열 목록을 계층적 트리 구조로 효율적으로 변환하는 방법은 무엇입니까?

배열 목록을 계층적 트리 구조로 효율적으로 변환하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-04 14:21:10165검색

How to Efficiently Convert an Array List into a Hierarchical Tree Structure?

배열 목록에서 배열 트리 만들기

계층적 관계를 갖는 요소 목록이 있는 상황에서 이를 트리와 같은 형식으로 변환 구조가 중요할 수 있습니다. 이 변환은 효율적인 구성과 검색이 필요한 복잡한 데이터를 처리할 때 특히 유용합니다.

다음 목록을 예로 들어보세요.

[
  {id: 100, parentId: 0, name: 'a'},
  {id: 101, parentId: 100, name: 'a'},
  {id: 102, parentId: 101, name: 'a'},
  {id: 103, parentId: 101, name: 'a'},
]

목표는 이 목록을 계층 구조로 재구성하는 것입니다. 각 요소가 상위 요소와 하위 요소(있는 경우)에 대한 참조를 갖는 트리 구조입니다.

이 변환을 수행하는 효과적인 접근 방식 중 하나는 다음과 같습니다. 다음 코드 조각:

<?php

$arr = [
    ['id' => 100, 'parentId' => 0, 'name' => 'a'],
    ['id' => 101, 'parentId' => 100, 'name' => 'a'],
    ['id' => 102, 'parentId' => 101, 'name' => 'a'],
    ['id' => 103, 'parentId' => 101, 'name' => 'a'],
];

$new = [];
foreach ($arr as $a) {
    $new[$a['parentId']][] = $a;
}
$tree = createTree($new, [$arr[0]]);
print_r($tree);

function createTree(&$list, $parent) {
    $tree = [];
    foreach ($parent as $k => $l) {
        if (isset($list[$l['id']])) {
            $l['children'] = createTree($list, $list[$l['id']]);
        }
        $tree[] = $l;
    }
    return $tree;
}

이 코드는 parentId를 기준으로 요소를 그룹화하여 입력 목록을 효율적으로 처리합니다. 그런 다음 트리 구조를 재귀적으로 구축하여 각 요소를 해당 하위 요소로 채웁니다. 결과 트리는 원본 목록의 계층적 표현을 제공하므로 상위-하위 관계를 기반으로 데이터를 더 쉽게 탐색하고 검색할 수 있습니다.

위 내용은 배열 목록을 계층적 트리 구조로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.