현재 위치: > 최신 기사 목록> 트리 구조에 대한 PHP 목록의 구현 방법 | 데이터 변환 및 관리 기술

트리 구조에 대한 PHP 목록의 구현 방법 | 데이터 변환 및 관리 기술

gitbox 2025-07-27

트리 구조에 대한 PHP 목록의 구현 방법

개발 과정에서 평평한 데이터 구조를 트리 구조로 변환 해야하는 경우가 많습니다. 특히 메뉴, 카테고리, 조직 구조 등과 같은 계층 적 관계를 표시 해야하는 시나리오에서는 PHP를 사용하여 목록 데이터를 트리 구조로 변환하여 개발 효율성을 향상시키는 방법을 자세히 소개합니다.

나무 구조의 기본 개념

트리 구조는 루트 노드와 해당 다중 자식 노드로 구성된 계층 적 데이터 모델입니다. 각 하위 노드에는 자체 하위 노드 등이있을 수 있습니다. 나무 구조는 회사 조직 구조, 제품 분류 등과 같은 계층 적 관계를 나타내는 데 매우 적합합니다.

데이터 준비

평평한 목록을 트리 구조로 변환하려면 노드 및 상위 노드에 대한 정보가 포함 된 데이터 목록이 먼저 필요합니다. 예를 들어, 다음은 노드와 부모 노드 간의 관계를 포함하는 예제입니다.

 // 샘플 데이터
$list = [
    ['id' => 1, 'name' => '루트 노드', 'pid' => 0],
    ['id' => 2, 'name' => '어린이 노드1', 'pid' => 1],
    ['id' => 3, 'name' => '어린이 노드2', 'pid' => 1],
    ['id' => 4, 'name' => '어린이 노드1.1', 'pid' => 2],
    ['id' => 5, 'name' => '어린이 노드1.2', 'pid' => 2],
];

트리 구조에 목록을 구현하는 PHP 기능

다음으로 평면 데이터를 트리 구조로 변환하는 PHP 함수를 작성합니다. 이 기능의 핵심 논리는 노드 ID 및 상위 노드 ID를 사용하여 데이터를 통과하여 계층 적 관계를 설정하는 것입니다.

 function listToTree($list) {
    $tree = [];
    $references = [];
    // 각 노드에 대한 참조를 구성하십시오
    foreach ($list as $element) {
        $references[$element['id']] = $element;
        $references[$element['id']]['children'] = [];
    }
    // 스패닝 트리 구조
    foreach ($list as $element) {
        if ($element['pid'] == 0) {
            // 루트 노드
            $tree[] = &$references[$element['id']];
        } else {
            // 어린이 노드
            $references[$element['pid']]['children'][] = &$references[$element['id']];
        }
    }
    return $tree;
}

// 호출 기능
$tree = listToTree($list);
print_r($tree);

코드 분석

위의 코드에서는 ListTotree 라는 함수를 정의합니다. ListTotree는 노드 데이터를 포함하는 평면 배열을 매개 변수로 가져 와서 트리 구조를 반환합니다. 함수 내부에서 각 노드와 하위 노드는 루프를 통해 연결되며 트리 구조가 최종적으로 구성됩니다.

출력 트리 구조

print_r 함수를 사용하여 생성 된 트리 구조를 쉽게 볼 수 있습니다. JSON 형식으로 변환하거나 프론트 엔드 페이지에 표시하는 등 실제 요구에 따라 구조를 추가로 처리 할 수 있습니다.

요약

이 기사는 PHP 코드를 통해 목록 데이터를 트리 구조로 변환하는 방법을 자세히 설명합니다. 트리 구조의 기본 개념과 구현 방법을 이해 함으로써이 기술을 쉽게 마스터하고 다양한 수준에서 데이터 표시 및 관리에서 효율적으로 작동하는 데 도움이 될 수 있습니다. 이러한 기술을 마스터하면 개발 효율성을 향상시킬뿐만 아니라 데이터 관리의 편의성을 향상시킬 수 있습니다.

이 기사가 도움이되기를 바랍니다. 궁금한 점이 있으면 의견 섹션에 메시지를 남겨 두십시오.