Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Data Kategori Hierarki dalam PHP/MySQL dengan Hanya Satu Pas Pangkalan Data?

Bagaimana untuk Mendapatkan Data Kategori Hierarki dalam PHP/MySQL dengan Hanya Satu Pas Pangkalan Data?

Linda Hamilton
Linda Hamiltonasal
2024-10-23 17:46:01540semak imbas

How to Retrieve Hierarchical Category Data in PHP/MySQL with Just One Database Pass?

Hierarki Kategori dalam PHP/MySQL

Dalam PHP/MySQL, sangat cekap untuk menyimpan kategori dan subkategori dalam struktur hierarki menggunakan model senarai bersebelahan. Untuk mendapatkan semula data hierarki ini dengan berkesan, kami boleh menggunakan pendekatan yang memerlukan hanya satu pas pangkalan data.

Algoritma Pendapatan Data Satu Laluan

Mari kita buat tatasusunan $refs dan tatasusunan $list, sama dengan apa yang telah dibentangkan dalam jawapan yang disediakan.

<code class="php">$refs = [];
$list = [];

$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name";

$result = $pdo->query($sql);

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

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

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

Algoritma ini membina struktur data hierarki dengan cekap. Tatasusunan $refs memegang rujukan kepada semua kategori dan tatasusunan $list mengandungi rujukan kepada kategori peringkat teratas (yang tiada induk).

Penjanaan Senarai Rekursif

Untuk mengeluarkan struktur hierarki sebagai senarai HTML, fungsi rekursif seperti berikut boleh digunakan:

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

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

    $html .= '</ul>';

    return $html;
}</code>

Fungsi ini membina senarai HTML secara rekursif, dengan cekap mewakili data hierarki yang diperoleh daripada pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Kategori Hierarki dalam PHP/MySQL dengan Hanya Satu Pas Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn