부모-자식 관계에서 계층 트리 생성
과제:
이름-부모 이름 쌍은 계층적 트리 구조로 구성됩니다. 목표는 하위-부모 관계를 나타내는 중첩된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!