재귀 기능이 있는 메뉴 트리 반향
다양한 루트 아래에 계층적 데이터가 구성된 MySQL 데이터베이스가 있는 시나리오에서 다음과 같은 문제가 발생할 수 있습니다. 이 구조를 복제하는 HTML 메뉴 트리를 생성해야 합니다. 여기에는 루트 카테고리와 해당 하위 카테고리를 재귀적으로 표시하는 작업이 포함됩니다.
이를 달성하기 위해 재귀적인 PHP 함수를 사용하여 데이터베이스 레코드를 탐색하고 HTML 마크업을 구성할 수 있습니다. 이 함수에는 카테고리 데이터가 필요하며 선택적으로 상위 식별자 및 깊이 수준이 필요합니다.
이 함수는 카테고리를 반복하여 지정된 상위와 일치하는 요소를 검색합니다. 일치하는 항목이 발견되면
다음 수정된 PHP 함수는 빈
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $sub = $this->recurse($categories, $category['id'], $level + 1); if ($sub != '<ul></ul>') { $ret .= $sub; } $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
성능을 향상하려면 각 카테고리의 하위 카테고리 수를 나타내는 필드를 포함하도록 데이터베이스를 쿼리하는 것이 좋습니다. 이 정보를 활용하여 하위 카테고리를 재귀적으로 순회할지 여부를 결정할 수 있습니다.
<code class="php">select Category.*, (select count(distinct c1.id) from Category as c1 where c1.root = Category.id) as ChildCount from Category</code>
이 개선 사항을 통해 그에 따라 재귀 기능을 수정할 수 있습니다.
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; if ($category['ChildCount'] > 0) { $ret .= $this->recurse($categories, $category['id'], $level + 1); } $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
위 내용은 재귀 PHP 함수를 사용하여 MySQL 데이터베이스에 저장된 계층적 데이터에서 HTML 메뉴 트리를 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!