> 백엔드 개발 > PHP 튜토리얼 > 재귀 함수는 어떻게 평면 데이터베이스 결과에서 다차원 배열을 생성할 수 있습니까?

재귀 함수는 어떻게 평면 데이터베이스 결과에서 다차원 배열을 생성할 수 있습니까?

DDD
풀어 주다: 2024-12-15 20:59:15
원래의
557명이 탐색했습니다.

How Can a Recursive Function Create a Multidimensional Array from a Flat Database Result?

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

문제:

플랫 결과 테이블에서 계층적으로 중첩 배열 구축 , 여기서 각 행은 상위 항목이 있는 항목을 나타냅니다. ID.

해결책:

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;
}

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

설명:

알고리즘은 재귀를 사용하여 계층적 트리 구조를 반복적으로 구축합니다.

  1. 초기화합니다 빈 배열 $branch는 트리의 현재 수준을 저장합니다.
  2. 요소를 반복하여 요소의 parent_id가 지정된 $parentId와 일치하는지 확인합니다.
  3. 일치하는 항목이 발견되면 이는 다음을 의미합니다. 요소는 현재 상위 요소의 하위 요소이며 $branch에 추가되어야 합니다.
  4. 다음을 사용하여 buildTree 함수를 재귀적으로 호출합니다. 요소의 ID를 새 $parentId로 사용하여 하위 항목을 찾습니다.
  5. 하위 항목이 발견되면 현재 요소에 하위 배열로 추가됩니다.
  6. 모든 하위 항목을 처리한 후 $ 계층 구조의 다음 레벨을 나타내기 위해 분기 배열이 반환됩니다.
  7. 초기 $parentId가 0인 buildTree에 대한 초기 호출은 다음의 루트 요소를 가져옵니다. 계층구조를 가지며 재귀 호출이 중첩 구조를 채웁니다.

위 내용은 재귀 함수는 어떻게 평면 데이터베이스 결과에서 다차원 배열을 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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