PHP에서 2차원 배열을 트리 구조로 변환하는 방법에 대해 이야기해 보겠습니다.
네트워크 애플리케이션이 지속적으로 개발됨에 따라 프런트엔드와 백엔드 분리를 사용하여 개발되는 웹사이트와 애플리케이션이 점점 더 많아지고 있습니다. 이는 프런트엔드 코드와 백엔드 코드를 분리하며 데이터 상호작용을 통한 통신이 필요합니다. 데이터 상호작용 과정에서 배열, 특히 2차원 배열이 자주 사용됩니다. 그렇다면 2차원 배열을 트리 구조로 변환하는 방법은 무엇일까요? 이 기사에서는 PHP에서 2차원 배열을 트리로 변환하는 방법을 공유합니다.
1. 트리 구조란
2차원 배열을 트리로 변환하는 방법을 소개하기 전에 먼저 트리 구조가 무엇인지 알아보겠습니다. 컴퓨터 과학에서 트리 구조는 n(n>0)개의 제한된 노드로 구성된 계층적 관계 집합인 비선형 데이터 구조입니다. 노드 중 하나를 루트 노드라고 하며 나머지 노드는 트리 구조의 하나 이상의 하위 트리로 볼 수 있습니다.
간단한 예를 들어 보겠습니다. 회사의 조직 구조는 최상위 수준이 총괄 관리자(루트 노드)이고 여러 부서 관리자(하위 노드)가 있습니다. 각 부서 관리자에는 여러 명의 직원(리프 노드)이 있습니다.
2. 2차원 배열을 트리 구조로 변환하는 원리
2차원 배열을 트리 구조로 변환하는 것은 일련의 평면 데이터를 내부 관계를 활용하여 트리 데이터 구조로 구성하는 것으로 볼 수 있습니다. 프로세스. 변환 프로세스는 재귀적으로 수행할 수 있습니다.
- 2차원 배열에서 루트 노드 데이터를 찾아 배열에서 제거한 다음 루트 노드 아래의 하위 노드를 재귀적으로 검색합니다.
- 전체 배열을 탐색하고 각 요소의 하위 노드를 스택에 푸시한 다음 하위 노드 아래에서 하위 노드를 재귀적으로 검색합니다.
- 재귀 종료 조건은 현재 배열이 비어 있거나 현재 노드의 하위 노드가 없다는 것입니다.
위의 세 단계에 따라 2차원 배열을 트리로 변환하는 기능을 구현할 수 있습니다.
3. 코드 구현
실제 예제를 사용하여 2차원 배열을 트리 구조로 변환하는 방법을 보여드리겠습니다. 다음과 같은 2차원 배열이 있다고 가정합니다.
$data = array( array('id'=>1,'name'=>'节点1','pid'=>0), array('id'=>2,'name'=>'节点2','pid'=>1), array('id'=>3,'name'=>'节点3','pid'=>2), array('id'=>4,'name'=>'节点4','pid'=>2), array('id'=>5,'name'=>'节点5','pid'=>0) );
배열에는 5개의 노드가 포함되어 있습니다. 여기서 id는 노드의 고유 식별자를 나타내고, name은 노드 이름을 나타내고, pid는 노드의 상위 노드 ID를 나타냅니다.
이제 이 2차원 배열을 다음 트리 구조로 변환해야 합니다.
Array ( [0] => Array ( [id] => 1 [name] => 节点1 [children] => Array ( [0] => Array ( [id] => 2 [name] => 节点2 [children] => Array ( [0] => Array ( [id] => 3 [name] => 节点3 [children] => Array() ) [1] => Array ( [id] => 4 [name] => 节点4 [children] => Array() ) ) ) ) ) [1] => Array ( [id] => 5 [name] => 节点5 [children] => Array() ) )
구체적인 구현 프로세스는 다음과 같습니다.
function buildTree(&$data,$pid = 0){ $tree = array(); foreach($data as $k=>$v){ if($v['pid'] == $pid){ $temp = $v; $temp['children'] = buildTree($data,$v['id']); $tree[] = $temp; unset($data[$k]); } } return $tree; } $data = array( array('id'=>1,'name'=>'节点1','pid'=>0), array('id'=>2,'name'=>'节点2','pid'=>1), array('id'=>3,'name'=>'节点3','pid'=>2), array('id'=>4,'name'=>'节点4','pid'=>2), array('id'=>5,'name'=>'节点5','pid'=>0) ); print_r(buildTree($data));
위 코드에서 buildTree 함수는 먼저 빈 배열 $tree를 인스턴스화한 다음 전체 $data 배열을 순회하고 pid $pid가 있는 모든 데이터를 $tree 배열에 저장하고 $pid 아래의 모든 하위 노드를 재귀적으로 검색한 다음 $tree 배열을 반환합니다. $data 배열이 비어 있거나 현재 노드의 하위 노드가 없으면 재귀가 종료됩니다.
4. 요약
위의 코드를 통해 2차원 배열을 트리 구조로 변환하는 과정이 매우 간단하다는 것을 알 수 있습니다. 모든 노드를 차례로 트리 구조로 구성하려면 재귀만 사용하면 됩니다. 이는 웹 개발 시 데이터 처리 및 표시에 매우 유용하며 다양한 시나리오에서 데이터 표시 및 데이터 구조 구성의 다양한 기능을 실현할 수 있습니다.
위 내용은 PHP에서 2차원 배열을 트리 구조로 변환하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8의 JIT 컴파일은 자주 실행되는 코드를 컴퓨터 코드로 컴파일하여 성능을 향상시켜 계산이 많은 응용 프로그램에 도움이되고 실행 시간을 줄입니다.

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

이 기사는 PHP의 대칭 및 비대칭 암호화에 대해 논의하여 적합성, 성능 및 보안 차이를 비교합니다. 대칭 암호화는 더 빠르고 벌크 데이터에 적합하지만 안전한 키 교환에는 비대칭이 사용됩니다.

이 기사에서는 PHP에서 강력한 인증 및 승인을 구현하여 무단 액세스를 방지하고 모범 사례를 자세히 설명하고 보안 향상 도구를 권장합니다.

기사는 PHP, 커버 단계, 보안 측정, 최적화 기술 및 Solutions의 일반적인 오류를 사용하여 데이터베이스에서 데이터 검색에 대해 논의합니다. 문자 수 : 159

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

이 기사는 CSRF 토큰, 동일한 사이트 쿠키 및 적절한 세션 관리를 포함하여 PHP의 CSRF 공격을 방지하는 전략에 대해 설명합니다.
