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

부모-자식 관계에서 계층적 HTML 트리를 생성하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-29 19:42:15
원래의
424명이 탐색했습니다.

How to Generate a Hierarchical HTML Tree from Parent-Child Relationships?

부모-자식 관계에서 계층 트리 생성

과제:

이름-부모 이름 쌍은 계층적 트리 구조로 구성됩니다. 목표는 하위-부모 관계를 나타내는 중첩된 HTML 비순차 목록(

    )을 생성하는 것입니다.

    재귀적 접근 방식:

    해결책 두 가지 재귀 함수를 사용합니다. 첫 번째 함수인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()는 parseTree()에서 생성된 트리를 순회하여 인쇄합니다. 해당 HTML은 순서가 지정되지 않았습니다. list.

    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>';
        }
    }
    로그인 후 복사

    사용법:

    주어진 이름-상위 이름 쌍을 트리 구조로 변환하고 순서가 지정되지 않은 HTML 목록을 인쇄하려면 이러한 함수를 다음과 같이 호출합니다. 다음:

    $result = parseTree($tree);
    printTree($result);
    로그인 후 복사

    통합 기능:

    효율성 향상을 위해 두 기능을 단일 기능으로 병합할 수 있습니다.

    function parseAndPrintTree($root, $tree) {
        $return = array();
        if(!is_null($tree) && count($tree) > 0) {
            echo '<ul>';
            foreach($tree as $child => $parent) {
                if($parent == $root) {                    
                    unset($tree[$child]);
                    echo '<li>'.$child;
                    parseAndPrintTree($child, $tree);
                    echo '</li>';
                }
            }
            echo '</ul>';
        }
    }
    로그인 후 복사

    이 결합된 기능은 구문 분석 및 인쇄 프로세스를 단순화하고 반복 횟수를 줄입니다. 필수입니다.

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

    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    저자별 최신 기사
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿