>  기사  >  데이터 베이스  >  PHP와 MySQL에서 카테고리 계층 구조를 구성하는 방법은 무엇입니까?

PHP와 MySQL에서 카테고리 계층 구조를 구성하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-23 21:01:30452검색

How to Construct a Category Hierarchy in PHP and MySQL?

PHP 및 MySQL의 범주 계층

일반적인 데이터베이스 구조에서 범주는 계층적 방식으로 구성되며 상위 범주에는 하위 범주가 포함됩니다. . MySQL 데이터베이스에서 이 계층 구조를 검색하는 것은 어려운 작업이 될 수 있습니다. 이 기사에서는 PHP와 MySQL을 사용하여 카테고리 계층 구조를 효과적으로 구성하는 방법을 살펴봅니다.

인접 목록 모델

인접 목록 모델은 상위-하위 관계를 저장하여 계층적 데이터를 나타냅니다. 테이블 하나. 테이블의 각 행에는 카테고리의 ID와 상위 카테고리의 ID가 포함되어 있습니다. 이 모델을 사용하면 단일 SQL 쿼리를 사용하여 카테고리 트리를 효율적으로 검색할 수 있습니다.

계층 구조 생성

카테고리 계층 구조를 생성하기 위해 다음 PHP 코드를 사용합니다.

<code class="php">$refs = array();
$list = array();

$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";
$result = $pdo->query($sql);

foreach ($result as $row) {
    $ref = &$refs[$row['item_id']];

    $ref['parent_id'] = $row['parent_id'];
    $ref['name'] = $row['name'];

    if ($row['parent_id'] == 0) {
        $list[$row['item_id']] = &$ref;
    } else {
        $refs[$row['parent_id']]['children'][$row['item_id']] = &$ref;
    }
}</code>

이 코드는 결과 집합을 반복하여 배열의 각 범주에 대한 참조를 생성합니다. 상위-하위 관계를 사용하여 계층 구조를 나타내는 다차원 배열을 구축합니다.

출력 목록 생성

계층 구조를 표시하기 위해 재귀 함수를 사용합니다.

<code class="php">function toUL(array $array) {
    $html = '<ul>' . PHP_EOL;

    foreach ($array as $value) {
        $html .= '<li>' . $value['name'];
        if (!empty($value['children'])) {
            $html .= toUL($value['children']);
        }
        $html .= '</li>' . PHP_EOL;
    }

    $html .= '</ul>' . PHP_EOL;

    return $html;
}</code>

이 함수는 다차원 배열을 사용하여 카테고리 계층 구조를 나타내는 HTML 비순차 목록을 생성합니다. 계층 구조를 재귀적으로 순회하면서 필요에 따라 중첩 목록을 생성합니다.

위 내용은 PHP와 MySQL에서 카테고리 계층 구조를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.