>데이터 베이스 >MySQL 튜토리얼 >PHP와 MySQL을 사용하여 계층적 데이터 구조에서 모든 하위 노드를 검색하는 방법은 무엇입니까?

PHP와 MySQL을 사용하여 계층적 데이터 구조에서 모든 하위 노드를 검색하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-06 12:12:02387검색

How to Retrieve All Child Nodes in a Hierarchical Data Structure with PHP and MySQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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