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

Linda Hamilton
Lepaskan: 2024-10-23 17:46:01
asal
539 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!