개발 과정에서 평평한 데이터 구조를 트리 구조로 변환 해야하는 경우가 많습니다. 특히 메뉴, 카테고리, 조직 구조 등과 같은 계층 적 관계를 표시 해야하는 시나리오에서는 PHP를 사용하여 목록 데이터를 트리 구조로 변환하여 개발 효율성을 향상시키는 방법을 자세히 소개합니다.
트리 구조는 루트 노드와 해당 다중 자식 노드로 구성된 계층 적 데이터 모델입니다. 각 하위 노드에는 자체 하위 노드 등이있을 수 있습니다. 나무 구조는 회사 조직 구조, 제품 분류 등과 같은 계층 적 관계를 나타내는 데 매우 적합합니다.
평평한 목록을 트리 구조로 변환하려면 노드 및 상위 노드에 대한 정보가 포함 된 데이터 목록이 먼저 필요합니다. 예를 들어, 다음은 노드와 부모 노드 간의 관계를 포함하는 예제입니다.
// 샘플 데이터
$list = [
['id' => 1, 'name' => '루트 노드', 'pid' => 0],
['id' => 2, 'name' => '어린이 노드1', 'pid' => 1],
['id' => 3, 'name' => '어린이 노드2', 'pid' => 1],
['id' => 4, 'name' => '어린이 노드1.1', 'pid' => 2],
['id' => 5, 'name' => '어린이 노드1.2', 'pid' => 2],
];
다음으로 평면 데이터를 트리 구조로 변환하는 PHP 함수를 작성합니다. 이 기능의 핵심 논리는 노드 ID 및 상위 노드 ID를 사용하여 데이터를 통과하여 계층 적 관계를 설정하는 것입니다.
function listToTree($list) {
$tree = [];
$references = [];
// 각 노드에 대한 참조를 구성하십시오
foreach ($list as $element) {
$references[$element['id']] = $element;
$references[$element['id']]['children'] = [];
}
// 스패닝 트리 구조
foreach ($list as $element) {
if ($element['pid'] == 0) {
// 루트 노드
$tree[] = &$references[$element['id']];
} else {
// 어린이 노드
$references[$element['pid']]['children'][] = &$references[$element['id']];
}
}
return $tree;
}
// 호출 기능
$tree = listToTree($list);
print_r($tree);
위의 코드에서는 ListTotree 라는 함수를 정의합니다. ListTotree는 노드 데이터를 포함하는 평면 배열을 매개 변수로 가져 와서 트리 구조를 반환합니다. 함수 내부에서 각 노드와 하위 노드는 루프를 통해 연결되며 트리 구조가 최종적으로 구성됩니다.
print_r 함수를 사용하여 생성 된 트리 구조를 쉽게 볼 수 있습니다. JSON 형식으로 변환하거나 프론트 엔드 페이지에 표시하는 등 실제 요구에 따라 구조를 추가로 처리 할 수 있습니다.
이 기사는 PHP 코드를 통해 목록 데이터를 트리 구조로 변환하는 방법을 자세히 설명합니다. 트리 구조의 기본 개념과 구현 방법을 이해 함으로써이 기술을 쉽게 마스터하고 다양한 수준에서 데이터 표시 및 관리에서 효율적으로 작동하는 데 도움이 될 수 있습니다. 이러한 기술을 마스터하면 개발 효율성을 향상시킬뿐만 아니라 데이터 관리의 편의성을 향상시킬 수 있습니다.
이 기사가 도움이되기를 바랍니다. 궁금한 점이 있으면 의견 섹션에 메시지를 남겨 두십시오.