PHP의 평면 배열에서 트리 구축
PHP에서는 평면 배열에서 트리 데이터 구조를 구축하는 것이 어려울 수 있습니다. . 그러나 이 작업은 재귀를 적용하고 평면 배열 내의 부모-자식 관계를 이해함으로써 단순화될 수 있습니다.
각 요소가 'id'와 'parent_id'를 갖는 평면 배열이 주어지면 목표는 다음과 같습니다. 계층적 트리로 변환하는 것입니다. 결과 트리의 각 요소에는 하위 요소가 있는 경우 'children' 속성이 있어야 합니다.
해결책
제공된 코드는 트리를 재귀적으로 생성하려고 시도하지만 브랜치에 요소를 추가한 후 요소를 제거하지 못하여 동일한 요소의 복사본이 여러 개 생성됩니다. 이 문제를 해결하려면 해당 요소를 브랜치에 추가한 후 플랫 배열에서 제거해야 합니다.
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['id']] = $element; unset($elements[$element['id']]); } } return $branch; }
설명
결과 배열은 하위 배열을 중첩 배열로 포함하는 각 노드가 있는 계층적 트리가 되며 원래 평면 배열의 상위-하위 관계를 명확하게 표현합니다.
위 내용은 PHP의 평면 배열에서 트리 구조를 효율적으로 구축하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!