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

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

Patricia Arquette
풀어 주다: 2024-12-23 10:53:09
원래의
544명이 탐색했습니다.

How to Recursively Build a Multidimensional Array from a Flat Database Result?

데이터베이스 결과에서 다차원 배열을 구성하는 재귀 함수

문제:

평면화된 데이터베이스 결과의 페이지 및 카테고리 배열을 변환할 수 있는 재귀 함수 구조화된 계층 관계가 있는 중첩 배열.

해결책:

제공된 솔루션은 간단하고 일반적인 접근 방식을 제공합니다.

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}
로그인 후 복사

설명 :

알고리즘은 다음과 같이 작동합니다. 다음:

  1. 초기 실행(ParentId = 0):

    • 요소의 전체 배열을 고려합니다.
    • parent_id가 0인 요소를 식별합니다(루트 노드).
    • 해당 요소에 대해 buildTree를 재귀적으로 호출하여 하위 요소를 찾습니다.
  2. 재귀 실행(ParentId != 0):

    • 과 일치하는 요소만 고려 지정된 parent_id.
    • 해당 요소에 대해 buildTree를 반복적으로 호출하여 하위 요소를 찾습니다.
  3. 계층 구조 구축:

    • 현재 상위 항목의 하위 요소로 식별된 요소는 배열.
    • 이 배열은 상위 요소의 "children" 속성에 할당됩니다.
  4. 반환 결과:

    • 재귀 호출은 각 수준의 하위 요소 배열을 반환합니다. Hierarchy.
    • 이 함수는 계층 구조를 나타내는 완전한 중첩 배열을 반환하여 끝납니다.

이 함수를 데이터베이스 결과에 적용하면 조직화된 배열을 얻을 수 있습니다. 원하는 출력의 예시와 같이 세분화된 계층 관계가 있는 배열입니다. 이 접근 방식은 다목적이며 페이지와 카테고리 모두에 적용할 수 있습니다.

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

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