> 백엔드 개발 > PHP 튜토리얼 > 계층적 데이터베이스 데이터에서 다차원 배열을 재귀적으로 구축하는 방법은 무엇입니까?

계층적 데이터베이스 데이터에서 다차원 배열을 재귀적으로 구축하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-16 03:10:09
원래의
948명이 탐색했습니다.

How to Recursively Build a Multidimensional Array from Hierarchical Database Data?

데이터베이스 결과에서 다차원 배열을 재귀적으로 생성

이 시나리오의 목표는 데이터베이스 결과에서 검색된 계층적 데이터의 중첩 배열 표현을 구성하는 것입니다. 데이터베이스 쿼리. 결과 테이블에는 상위-하위 관계가 있는 페이지 또는 카테고리가 포함됩니다.

이를 달성하기 위해 재귀 함수인 buildTree()를 사용합니다. 이 함수는 요소 배열과 선택적 상위 ID(기본값은 0)를 사용합니다. 각 요소를 반복하여 지정된 상위 ID가 있는 요소를 식별합니다.

각 하위 요소에 대해 함수는 자신을 재귀적으로 호출하여 해당 하위 트리를 얻습니다. 그런 다음 하위 요소는 해당 하위 요소로 확장되어 계층 구조가 됩니다. 이 프로세스는 모든 요소가 처리될 때까지 계속되어 계층적 데이터 구조를 미러링하는 중첩 배열을 생성합니다.

앞서 제공된 데이터베이스 테이블을 고려하세요.

id parent_id title
1 0 Parent Page
2 1 Sub Page
3 2 Sub Sub Page
4 0 Another Parent Page

buildTree() 함수를 사용하면 원하는 중첩 트리를 생성할 수 있습니다. 배열:

$elements = [
    ['id' => 1, 'parent_id' => 0, 'title' => 'Parent Page'],
    ['id' => 2, 'parent_id' => 1, 'title' => 'Sub Page'],
    ['id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page'],
    ['id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page'],
];

$tree = buildTree($elements);
로그인 후 복사

출력 $tree는 다음과 같습니다.

[
    [
        'id' => 1,
        'parent_id' => 0,
        'title' => 'Parent Page',
        'children' => [
            [
                'id' => 2,
                'parent_id' => 1,
                'title' => 'Sub Page',
                'children' => [
                    [
                        'id' => 3,
                        'parent_id' => 2,
                        'title' => 'Sub Sub Page',
                    ]
                ]
            ]
        ]
    ],
    [
        'id' => 4,
        'parent_id' => 0,
        'title' => 'Another Parent Page',
    ]
]
로그인 후 복사

이 중첩 배열은 데이터베이스 테이블에 정의된 계층 관계를 유지하여 중첩된 데이터에 대한 효율적인 액세스 및 처리를 가능하게 합니다. 구조.

위 내용은 계층적 데이터베이스 데이터에서 다차원 배열을 재귀적으로 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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