>백엔드 개발 >PHP 튜토리얼 >PHP에서 부모-자식 관계를 계층 트리로 변환하는 방법은 무엇입니까?

PHP에서 부모-자식 관계를 계층 트리로 변환하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 09:57:10463검색

How to Convert Parent-Child Relationships into Hierarchical Trees in PHP?

부모-자식 관계를 계층 트리로 변환

프로그래밍에서는 일련의 부모-자식 관계를 계층 트리로 변환해야 할 수 있습니다. 계층적 트리 구조. 이 작업은 재귀적 접근 방식을 사용하여 PHP에서 수행할 수 있습니다.

예제 데이터:

다음과 같은 상위-하위 관계 집합을 고려하세요.

Child : Parent
H : G
F : G
G : D
E : D
A : E
B : C
C : E
D : NULL

계층형으로 전환 트리:

이 데이터를 계층적 트리 구조로 변환하기 위해 두 개의 PHP 함수를 생성합니다:

  • parseTree($tree, $root) : 이 함수는 자식-부모 쌍을 재귀적으로 구문 분석하고 tree.
  • printTree($tree): 이 함수는 트리를 순회하여 순서가 지정되지 않은 목록으로 인쇄합니다.

parseTree 함수:

function parseTree($tree, $root = null) {
    $return = array();
    foreach($tree as $child => $parent) {
        if($parent == $root) {
            unset($tree[$child]);
            $return[] = array(
                'name' => $child,
                'children' => parseTree($tree, $child)
            );
        }
    }
    return empty($return) ? null : $return;    
}

printTree 함수:

function printTree($tree) {
    if(!is_null($tree) && count($tree) > 0) {
        echo '<ul>';
        foreach($tree as $node) {
            echo '<li>' . $node['name'];
            printTree($node['children']);
            echo '</li>';
        }
        echo '</ul>';
    }
}

사용법:

이러한 함수를 사용하려면 먼저 하위-상위 쌍 배열을 초기화하세요. 그런 다음 배열로 parseTree를 호출하고 결과 트리로 printTree를 호출합니다.

$tree = array(
    'H' => 'G',
    'F' => 'G',
    'G' => 'D',
    'E' => 'D',
    'A' => 'E',
    'B' => 'C',
    'C' => 'E',
    'D' => null
);

$result = parseTree($tree);
printTree($result);

결과:

출력 계층 트리를 나타내는 순서가 지정되지 않은 목록입니다.

<ul>
<li>D
<ul>
<li>G
<ul>
<li>H</li>
<li>F</li>
</ul>
</li>
<li>E
<ul>
<li>A</li>
<li>C
<ul>
<li>B</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

위 내용은 PHP에서 부모-자식 관계를 계층 트리로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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