MySQL 쿼리 결과와 함께 PHP를 사용하여 자식, 손자, 하위 노드 가져오기
이 쿼리는 인접 목록이 있는 MySQL 테이블에서 데이터를 검색합니다. 여기서 각 행은 노드와 해당 상위 노드와의 관계를 나타냅니다. 목표는 이 데이터를 상위 노드 자체를 통합하면서 지정된 상위 ID 아래의 모든 하위, 손자 및 하위 노드를 포함하는 배열로 변환하는 것입니다.
재귀 함수 사용: fetch_recursive
fetch_recursive 함수는 지정된 상위 ID부터 시작하여 데이터 배열을 순회하고 모든 하위 노드가 포함될 때까지 하위 요소를 반복적으로 추가합니다. 함수 코드는 다음과 같습니다.
function fetch_recursive($src_arr, $currentid, $parentfound = false, $cats = array()) { foreach($src_arr as $row) { if((!$parentfound && $row['id'] == $currentid) || $row['parent_id'] == $currentid) { $rowdata = array(); foreach($row as $k => $v) $rowdata[$k] = $v; $cats[] = $rowdata; if($row['parent_id'] == $currentid) $cats = array_merge($cats, fetch_recursive($src_arr, $row['id'], true)); } } return $cats; }
fetch_recursive 함수 사용
함수를 사용하려면 쿼리에서 얻은 데이터 배열을 fetch_recursive 함수에 전달하고 하위 항목을 검색하려는 상위 ID입니다. 예:
$list = fetch_recursive($data, 3);
이렇게 하면 ID 3의 상위 노드와 모든 하위 노드를 포함하여 다음 구조의 배열이 반환됩니다.
Array ( [0] => Array ( [id] => 3 [name] => Portable Electronics [parent_id] => 1 ) [1] => Array ( [id] => 7 [name] => Mp3 Players [parent_id] => 3 ) [2] => Array ( [id] => 10 [name] => Flash [parent_id] => 7 ) [3] => Array ( [id] => 8 [name] => CD Players [parent_id] => 3 ) [4] => Array ( [id] => 9 [name] => 2 Way Radios [parent_id] => 3 ) )
위 내용은 MySQL 쿼리 결과와 함께 PHP를 사용하여 자식, 손자 및 하위 노드를 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!