집 >데이터 베이스 >MySQL 튜토리얼 >재귀 PHP 함수를 사용하여 트리 구조에서 특정 상위의 중첩된 하위 노드를 모두 검색하는 방법은 무엇입니까?
데이터가 인접 목록 형식으로 저장된 경우 재귀 함수를 사용하면 하위 및 손자를 효율적으로 검색할 수 있습니다. 특정 상위 노드에 대한 노드입니다. 이 접근 방식은 지정된 상위 노드 아래의 모든 노드를 식별하기 위한 맞춤형 솔루션을 제공합니다.
다음은 이 작업을 수행하는 재귀 함수의 구현입니다.
function fetch_recursive($tree, $parent_id, $parent_found = false, $list = array()) { foreach ($tree as $key => $node) { if ($parent_found || $key == $parent_id) { $row_data = array(); foreach ($node as $field => $value) { if ($field != 'children') { $row_data[$field] = $value; } } $list[] = $row_data; if (isset($node['children']) && !empty($node['children'])) { $list = array_merge($list, fetch_recursive($node['children'], $parent_id, true)); } } elseif (isset($node['children']) && !empty($node['children'])) { $list = array_merge($list, fetch_recursive($node['children'], $parent_id)); } } return $list; }
별도의 함수를 사용하여 데이터에서 트리 구조를 이미 구축했다고 가정하면 이 재귀 함수를 활용하여 특정 상위 노드에 대한 모든 하위 및 손자 노드를 검색할 수 있습니다.
예를 들어, 다음과 같이 구성된 트리가 있는 경우:
Array ( [1] => Array ( [id] => 1 [name] => Electronics [parent_id] => 0 [children] => Array ( [2] => Array ( [id] => 2 [name] => Televisions [parent_id] => 1 [children] => Array ( [4] => Array ( [id] => 4 [name] => Tube [parent_id] => 2 [children] => Array() ) [5] => Array ( [id] => 5 [name] => LCD [parent_id] => 2 [children] => Array() ) [6] => Array ( [id] => 6 [name] => Plasma [parent_id] => 2 [children] => Array() ) ) ) [3] => Array ( [id] => 3 [name] => Portable Electronics [parent_id] => 1 [children] => Array ( [7] => Array ( [id] => 7 [name] => Mp3 Players [parent_id] => 3 [children] => Array ( [10] => Array ( [id] => 10 [name] => Flash [parent_id] => 7 [children] => Array() ) ) ) [8] => Array ( [id] => 8 [name] => CD Players [parent_id] => 3 [children] => Array() ) [9] => Array ( [id] => 9 [name] => 2 Way Radios [parent_id] => 3 [children] => Array() ) ) ) ) ) )
예를 들어 ID가 3인 노드의 모든 하위 노드를 검색하려면 다음과 같이 함수를 호출합니다.
$parent_id = 3; $child_nodes = fetch_recursive($tree, $parent_id);
$child_nodes 변수에는 이제 다음과 같이 ID 3인 노드의 모든 하위 노드가 포함된 배열이 포함됩니다.
위 내용은 재귀 PHP 함수를 사용하여 트리 구조에서 특정 상위의 중첩된 하위 노드를 모두 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!