
데이터베이스 결과에서 다차원 배열을 구성하는 재귀 함수
문제:
평면화된 데이터베이스 결과의 페이지 및 카테고리 배열을 변환할 수 있는 재귀 함수 구조화된 계층 관계가 있는 중첩 배열.
해결책:
제공된 솔루션은 간단하고 일반적인 접근 방식을 제공합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 ;
}
|
로그인 후 복사
설명 :
알고리즘은 다음과 같이 작동합니다. 다음:
-
초기 실행(ParentId = 0):
- 요소의 전체 배열을 고려합니다.
- parent_id가 0인 요소를 식별합니다(루트 노드).
- 해당 요소에 대해 buildTree를 재귀적으로 호출하여 하위 요소를 찾습니다.
-
재귀 실행(ParentId != 0):
- 과 일치하는 요소만 고려 지정된 parent_id.
- 해당 요소에 대해 buildTree를 반복적으로 호출하여 하위 요소를 찾습니다.
-
계층 구조 구축:
- 현재 상위 항목의 하위 요소로 식별된 요소는 배열.
- 이 배열은 상위 요소의 "children" 속성에 할당됩니다.
-
반환 결과:
- 재귀 호출은 각 수준의 하위 요소 배열을 반환합니다. Hierarchy.
- 이 함수는 계층 구조를 나타내는 완전한 중첩 배열을 반환하여 끝납니다.
이 함수를 데이터베이스 결과에 적용하면 조직화된 배열을 얻을 수 있습니다. 원하는 출력의 예시와 같이 세분화된 계층 관계가 있는 배열입니다. 이 접근 방식은 다목적이며 페이지와 카테고리 모두에 적용할 수 있습니다.
위 내용은 평면 데이터베이스 결과에서 다차원 배열을 재귀적으로 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!