MySQL 및 PHP를 사용하여 계층적 데이터 검색
데이터베이스에서 계층적 데이터를 검색하는 것은 어려울 수 있으며, 특히 인접 목록 데이터 모델을 사용할 때 더욱 그렇습니다. 이 질문은 지정된 상위 아래의 모든 하위 노드, 손자 등을 반환하는 함수를 생성하여 이 문제를 해결하려고 합니다.
계층 트리 구축
먼저 제공된 PHP 코드는 MySQL 테이블에서 데이터를 검색하여 연관 배열에 저장합니다. 인접 목록 데이터 모델은 단일 열(예: parent_id)에 상위-하위 관계를 저장하여 계층 구조를 나타냅니다.
이 데이터를 트리 구조로 변환하기 위해 buildtree() 함수는 배열을 반복적으로 탐색하여 각 항목을 연결합니다. 데이터와 함께 노드의 ID를 생성하고 하위 항목을 요소로 포함하는 중첩 배열을 생성합니다.
상위 노드 아래에서 노드 가져오기
fetch_recursive() 함수는 모든 하위 노드를 검색하도록 설계되었습니다. 지정된 상위 아래에 있습니다. 지정된 상위 ID에서 시작하여 트리 구조를 반복합니다. 노드의 상위 ID가 지정된 상위 ID와 일치하면 노드의 데이터를 결과 배열에 추가하고 하위 노드 탐색을 진행합니다.
사용 예
기능을 사용하는 경우 다음 PHP 코드는 트리를 구축하고 특정 ID 아래의 하위 노드를 검색합니다.
<?php $data = [ ['id' => 1, 'name' => 'Electronics', 'parent_id' => 0], ['id' => 2, 'name' => 'Televisions', 'parent_id' => 1], ['id' => 3, 'name' => 'Portable Electronics', 'parent_id' => 1], // ... additional data ]; $tree = buildtree($data); $child_nodes = fetch_recursive($tree, 3); foreach ($child_nodes as $node) { echo $node['name'] . '<br>'; }
위 내용은 PHP와 MySQL을 사용하여 계층적 데이터 구조에서 모든 하위 노드를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!