PHP에서 평면 배열로 트리 구조 구축
문제:
'id' 및 'parent_id' 필드가 있는 요소로 구성된 평면 배열(각 요소는 최대 하나의 상위 요소를 가질 수 있음) 그리고 0개 이상의 자식. 'parent_id'가 0이면 요소는 루트 수준 항목입니다. 목표는 이 평면 배열을 하위-상위 관계가 있는 계층적 트리로 재구성하는 것입니다.
해결책:
제공된 함수인 buildTree()가 이 작업을 효과적으로 수행합니다. 입력 배열을 반복하고 트리 구조를 재귀적으로 구축합니다. 출력 트리의 각 요소에는 해당 ID, 상위 ID 및 하위 요소 배열이 포함됩니다.
구현:
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; unset($elements[$element['id']]); } } return $branch; }
'설정 해제' 호출:
위 코드에서 unset() 호출은 계층 구조. 원래 입력 배열에서 처리된 요소를 제거하여 요소가 트리에서 중복되지 않도록 합니다.
예:
제공된 입력 배열을 고려하세요.
[_319_] => [...], [_320_] => [...], [_321_] => [...], [_322_] => [...], [_323_] => [...], [_324_] => [...], [_325_] => [...]
처리 후 출력 트리는 부모-자식을 유지합니다. 관계:
[_319_] => [...], [_320_] => [ 'id' => '_320_', 'parent_id' => 0, 'children' => [ [_321_] => [...], [_325_] => [...] ] ], [_323_] => [ 'id' => '_323_', 'parent_id' => 0, 'children' => [ [_324_] => [...] ] ]
따라서 buildTree() 함수를 사용하면 부모-자식 관계가 있는 요소의 단순 배열을 PHP의 구조화된 계층 트리로 변환할 수 있습니다.
위 내용은 PHP의 평면 배열에서 계층적 트리 구조를 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!