레코드 배열을 트리 구조로 효율적으로 변환하는 방법
이 시나리오에는 계층 구조를 나타내는 레코드 배열이 있습니다. . 각 레코드에는 ID, 상위 ID 및 이름이 있습니다. 목표는 이 배열을 중첩된 트리 구조로 변환하는 것입니다. 여기서 루트 노드에는 하위 노드가 있고, 이 하위 노드에는 자체 하위 노드가 있을 수 있습니다.
이를 달성하기 위해 createTree라는 재귀 함수가 사용됩니다. 이 함수는 두 개의 매개변수, 즉 레코드 배열에 대한 참조와 상위 배열을 사용합니다. 상위 배열을 반복하고 각 상위에 대해 레코드 배열에 하위 레코드가 있는지 확인합니다. 하위 레코드가 있는 경우 createTree 함수를 반복적으로 호출하여 이를 처리하고 결과를 상위의 children 속성에 할당합니다.
다음은 예입니다.
$arr = array( array('id' => 100, 'parentid' => 0, 'name' => 'a'), array('id' => 101, 'parentid' => 100, 'name' => 'a'), array('id' => 102, 'parentid' => 101, 'name' => 'a'), array('id' => 103, 'parentid' => 101, 'name' => 'a'), ); $new = array(); foreach ($arr as $a){ $new[$a['parentid']][] = $a; } $tree = createTree($new, array($arr[0])); print_r($tree); function createTree(&$list, $parent){ $tree = array(); foreach ($parent as $k =>$l){ if(isset($list[$l['id']])){ $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
이 코드는 원하는 트리 구조를 출력합니다. createTree 함수는 상위 레코드를 하위 레코드로 재귀적으로 변환하여 데이터의 계층적 트리 표현을 만듭니다. 이 함수는 입력 배열에 대한 참조에서 작동하므로 변경 사항이 원래 배열로 다시 전파될 수 있습니다.
위 내용은 레코드 배열을 중첩된 트리 구조로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!