PHP/MySQL 순서 없는 목록 메뉴 트리 구성: 비재귀 단일 데이터베이스 쿼리 접근 방식
데이터베이스 쿼리에서 순서 없는 목록 메뉴 트리를 만드는 것은 일반적인 작업. 일반적으로 데이터베이스를 여러 번 쿼리하는 재귀 함수가 사용됩니다. 그러나 단일 데이터베이스 쿼리를 사용하면 보다 효율적인 비재귀적 접근 방식이 가능합니다.
id, title 및 parent_id 속성이 있는 페이지 개체 배열이 주어지면 목표는 다음에 대한 HTML을 생성하는 함수를 만드는 것입니다. 순서가 지정되지 않은 목록 메뉴.
해결책:
우리 솔루션은 다음 단계를 사용합니다.
코드:
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id){ return true; } } return false; } function build_menu($rows, $parent=0) { $result = "<ul>"; foreach ($rows as $row) { if ($row['parent_id'] == $parent){ $result.= "<li>{$row['title']}"; if (has_children($rows,$row['id'])) { $result.= build_menu($rows,$row['id']); } $result.= "</li>"; } } $result.= "</ul>"; return $result; }</code>
사용 예:
<code class="php">$menu = [ ['id' => 1, 'title' => 'Menu 1', 'parent_id' => null], ... // Additional menu objects ]; echo build_menu($menu); // Outputs the complete menu list</code>
장점:
위 내용은 재귀 없이 PHP/MySQL에서 정렬되지 않은 목록 메뉴 트리를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!