PHP의 평면 배열에서 트리 구축
계층적 데이터 구조로 작업할 때 일반적인 작업은 평면 배열을 평면 배열로 변환하는 것입니다. 나무 같은 구조. 이는 부모-자식 관계를 식별하고 그에 따라 요소를 중첩함으로써 수행할 수 있습니다.
이에 접근하는 한 가지 방법은 배열을 반복하고 각 요소의 parent_id 값을 검사하는 것입니다. 요소의 parent_id가 0이면 루트 수준 항목으로 간주됩니다. 다른 요소의 경우 해당 parent_id를 사용하여 트리 내의 계층 구조를 결정할 수 있습니다.
원래 배열을 보존하려면 요소가 트리에 추가될 때 요소의 복사본을 만드는 것이 좋습니다. 이는 array_values() 함수를 사용하여 달성할 수 있습니다.
다음은 구현 예입니다.
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; }
결과 트리에서 중복 요소를 방지하려면 처리된 요소의 설정을 해제하는 것이 중요합니다. 원래 배열. 루프 내에 코드 한 줄을 추가하면 됩니다.
unset($elements[$element['id']]);
이 수정된 함수를 사용하면 플랫 배열을 계층적 트리 구조로 변환할 수 있습니다. 결과는 각 상위 요소 아래에 중첩된 하위 요소가 있는 배열이 됩니다.
위 내용은 PHP의 플랫 배열에서 트리 구조를 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!