중첩 메뉴 시스템에서 각 메뉴 항목은 하위 메뉴 항목을 가질 수 있습니다. , 이는 차례로 자체 하위 항목을 가질 수 있습니다. 목표는 데이터베이스에서 이러한 중첩된 메뉴 레벨을 효과적으로 가져와 표시하는 것입니다.
이를 달성하기 위해 다음과 같은 비재귀적 접근 방식을 사용할 수 있습니다. :
다음은 위의 접근 방식을 보여주는 PHP 함수입니다.
<code class="php">function generateMenu($items) { $html = ''; $parent = 0; $parentStack = array(); $children = array(); foreach ($items as $item) { $children[$item['parent_id']][] = $item; } while (($option = each($children[$parent])) || ($parent > 0)) { if (!empty($option)) { // 1) Item with children if (!empty($children[$option['value']['id']])) { $html .= '<li>' . $option['value']['title'] . '</li>'; $html .= '<ul>'; array_push($parentStack, $parent); $parent = $option['value']['id']; } // 2) Item without children else { $html .= '<li>' . $option['value']['title'] . '</li>'; } } // 3) Current parent has no more children else { $html .= '</ul>'; $parent = array_pop($parentStack); } } return $html; }</code>
함수를 사용하려면 먼저 데이터베이스에서 메뉴 항목을 검색하고 이를 generateMenu() 함수에 배열로 전달합니다. 결과 HTML은 계층적 메뉴 구조를 나타내는 일련의 중첩되고 정렬되지 않은 목록이 됩니다.
이 비재귀적 접근 방식은 다음 작업에서 발생할 수 있는 무한 루프의 위험을 제거합니다. 재귀를 사용하여 중첩된 메뉴를 생성하는 데 더욱 안정적이고 효율적인 솔루션이 됩니다.
위 내용은 PHP 및 MySQL을 사용하여 무제한 중첩 메뉴 시스템을 구축하는 방법: 비재귀적 접근 방식?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!