현재 위치: > 최신 기사 목록> PHP에서 트리 구조 다이어그램을 구현하는 두 가지 방법: 중첩 루프 및 재귀 자세한 설명

PHP에서 트리 구조 다이어그램을 구현하는 두 가지 방법: 중첩 루프 및 재귀 자세한 설명

M66 2025-10-25

PHP에서 트리 구조 다이어그램을 만드는 방법

웹 사이트나 시스템 개발에서 트리 구조는 카테고리, 권한 관리, 조직 구조 등의 계층적 데이터를 표시하는 데 자주 사용됩니다. PHP는 트리 구조 다이어그램을 구현하는 유연한 방법을 제공합니다. 두 가지 주요 아이디어가 있습니다. 중첩 루프를 사용하는 것과 재귀 함수를 사용하는 것입니다.

방법 1: 중첩 루프를 사용하여 트리 구조 생성

중첩 루프를 구현하는 아이디어는 배열을 통해 노드와 해당 부모-자식 관계를 저장한 다음 루프를 사용하여 데이터를 탐색하고 부모 노드와 자식 노드 간의 해당 관계를 기반으로 HTML 트리 구조를 연결하는 것입니다.

구현 단계

  • 노드와 해당 관계를 포함하는 배열을 만듭니다.
  • 각 노드에 대한 부모 노드와 자식 노드의 인덱스를 정의합니다.
  • 배열을 반복함으로써 해당 HTML 태그가 레이어별로 출력되어 트리 구조를 형성합니다.

샘플 코드

 $nodes = [
    [
        'id' => 1,
        'parent_id' => null,
        'children' => [2, 3]
    ],
    [
        'id' => 2,
        'parent_id' => 1,
        'children' => []
    ],
    [
        'id' => 3,
        'parent_id' => 1,
        'children' => []
    ],
];

function createTree($nodes) {
    $tree = '<ul>';
    foreach ($nodes as $node) {
        $tree .= '<li>' . $node['id'];
        if (!empty($node['children'])) {
            $tree .= createTree($node['children']);
        }
        $tree .= '</li>';
    }
    $tree .= '</ul>';
    return $tree;
}

echo createTree($nodes);

위의 코드는 루프와 함수 호출을 통해 기본 트리 구조 HTML을 구축합니다.

방법 2: 재귀 함수를 사용하여 트리 구조 생성

재귀적 방법은 중첩 루프보다 더 간결하며 계층적 관계가 많은 데이터 구조를 처리하는 데 적합합니다. 재귀 함수를 통해 자신을 호출하면 쉽게 다단계 노드를 표시할 수 있습니다.

구현 단계

  • 노드 깊이를 기반으로 HTML 구조를 동적으로 생성하는 재귀 함수를 정의합니다.
  • 함수 내에서 각 노드를 순회하고 하위 노드가 있는지 여부를 결정합니다.
  • 하위 노드가 있는 경우 함수를 다시 호출하여 기본 구조를 생성합니다.

샘플 코드

 function createTree($nodes, $depth = 0) {
    $tree = '';
    foreach ($nodes as $node) {
        $tree .= '<li style="padding-left:' . $depth * 10 . 'px">' . $node['id'] . '</li>';
        if (!empty($node['children'])) {
            $tree .= createTree($node['children'], $depth + 1);
        }
    }
    return $tree;
}

$nodes = [
    [
        'id' => 1,
        'parent_id' => null,
        'children' => [2, 3]
    ],
    [
        'id' => 2,
        'parent_id' => 1,
        'children' => []
    ],
    [
        'id' => 3,
        'parent_id' => 1,
        'children' => []
    ],
];

echo createTree($nodes);

이러한 재귀적 접근 방식은 구조를 더 명확하게 만들고 이후 프런트 엔드에 스타일이나 대화형 논리를 추가하는 것을 용이하게 할 수 있습니다.

요약

위의 두 가지 방법 모두 PHP 트리 구조 다이어그램을 생성할 수 있습니다. 중첩 루프는 데이터 구조가 얕은 경우에 적합한 반면, 재귀적 방법은 더 유연하고 유지 관리가 더 쉽습니다. 실제 요구 사항에 따라 적절한 구현 방법을 선택하면 개발 효율성과 코드 가독성을 크게 향상시킬 수 있습니다.