"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 상위 카테고리가 있는 데이터베이스에서 중첩된 메뉴 트리를 생성하기 위해 재귀를 어떻게 사용할 수 있습니까?

상위 카테고리가 있는 데이터베이스에서 중첩된 메뉴 트리를 생성하기 위해 재귀를 어떻게 사용할 수 있습니까?

2024-11-07에 게시됨
검색:998

How can recursion be used to generate a nested menu tree from a database with parent categories?

메뉴 트리 생성을 위한 재귀

귀하의 상황에서는 카테고리에 상위 카테고리를 나타내는 '루트' 필드가 있는 데이터베이스 구조가 있습니다. . 원하는 HTML 출력에는 범주 계층 구조를 나타내는 중첩 목록이 포함됩니다. 이를 달성하기 위해 재귀적인 PHP 함수를 사용할 수 있습니다.

다음은 예제 함수입니다:

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $ret .= $this->recurse($categories, $category['id'], $level 1); $ret .= '
  • '; } } return $ret . '
'; }

이 함수는 루트 카테고리에 null 값이 있는 '루트' 필드가 있다고 가정합니다. 카테고리를 반복하고, '루트' 필드를 기준으로 하위 카테고리를 식별하고, 중첩 목록을 사용하여 HTML을 구성합니다.

이 기능을 사용하려면:

  1. 데이터베이스에서 카테고리의 다차원 배열.
  2. 범주 배열과 null을 상위 매개변수로 사용하여 재귀 함수를 호출합니다.
  3. 반환된 값을 변수(예: $Tree).
  4. $Tree 변수를 에코하여 중첩된 메뉴 트리를 표시합니다.

선택적으로 빈 목록이 없는지 확인하여 함수를 수정할 수 있습니다. 카테고리에는 목록을 만들기 전에 하위 카테고리가 있습니다.

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $sub = $this->recurse($categories, $category['id'], $level 1); if ($sub != '
      ') { $ret .= $sub; } $ret .= '
    • '; } } return $ret . '
    '; }

    이 수정된 기능은 카테고리에 하위 항목이 하나 이상 있는 경우에만 목록을 생성합니다.

    최신 튜토리얼 더>

    부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

    Copyright© 2022 湘ICP备2022001581号-3