Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan fungsi klasifikasi tanpa had dalam pembangunan PHP

Cara menggunakan fungsi klasifikasi tanpa had dalam pembangunan PHP

王林
王林asal
2023-06-25 14:36:151252semak imbas

Dengan perkembangan pesat Internet, fungsi dan keperluan laman web menjadi semakin kompleks. Antaranya, fungsi pengelasan tanpa had adalah cara yang sangat penting untuk mengatur dan mengurus maklumat. Ia boleh membantu pembangun menyusun maklumat dengan berkesan supaya pengguna dapat mencari perkara yang mereka perlukan dengan lebih cepat. Hari ini, kami akan memperkenalkan cara menggunakan fungsi pengelasan tanpa had dalam pembangunan PHP.

Apakah fungsi pengelasan tanpa had?

Dalam pengelasan tradisional, setiap kategori hanya boleh mempunyai satu kategori ibu bapa dan beberapa kategori anak. Walau bagaimanapun, dalam beberapa senario yang kompleks, kaedah pengelasan ini akan dihadkan. Sebagai contoh, produk mungkin tergolong dalam berbilang jenama, berbilang kumpulan klasifikasi, berbilang wilayah dan sebagainya. Pada masa ini, fungsi pengelasan tanpa had boleh memberikan penyelesaian yang lebih baik.

Fungsi pengelasan tanpa had, seperti namanya, tidak mempunyai sekatan tahap Pengelasan boleh digabungkan secara bebas, dan satu data boleh tergolong dalam berbilang kategori. Fungsi ini sesuai untuk senario yang memerlukan organisasi data yang fleksibel, seperti klasifikasi blog, klasifikasi produk, klasifikasi berita, dsb.

Cara melaksanakan fungsi pengelasan tanpa had

Di bawah, kami akan memperkenalkan langkah demi langkah cara melaksanakan fungsi pengelasan tanpa had dalam pembangunan PHP.

Langkah 1: Buat jadual pangkalan data

Apabila mencipta jadual pangkalan data, kita perlu mempertimbangkan tiga medan utama, iaitu ID kategori, nama kategori dan ID induk kategori. ID kategori ialah pengecam unik bagi setiap kategori, nama kategori digunakan untuk memaparkan maklumat kategori dan ID induk kategori menunjukkan ID kategori induk bagi kategori tersebut.

BUAT JADUAL kategori (categories (
id int(11) NOT NULL,
name varchar(100) NOT NULL,
parent_id int(11) NOT NULL,
PRIMARY KEY (id)
);

第二步:插入分类数据

在数据库表中插入分类数据时,可以使用嵌套集合模型的方式,即用左右值描述每个分类层级组织关系,示例如下:

INSERT INTO categories (id, name, parent_id, lft, rgt id int(11) BUKAN NULL,
nama varchar(100) BUKAN NULL,
id_ibu bapa int(11) NOT NULL,
PRIMARY KEY (id)
);

Langkah 2: Masukkan data kategori

Apabila memasukkan data kategori ke dalam jadual pangkalan data, anda boleh menggunakan pembenaman Cara untuk menyediakan model koleksi adalah dengan menggunakan nilai kiri dan kanan ​​​​untuk menerangkan perhubungan organisasi setiap peringkat kategori Contohnya adalah seperti berikut:

MASUKKAN KE DALAM kategori (id, name, parent_id, lft, rgt) VALUES

(1, 'Elektrik perkakas', 0, 1, 10),

(2, ' TV', 1, 2, 3),

(3, 'Perkakas telefon mudah alih', 1, 4, 9),
(4, 'Telefon pintar', 3, 5, 6),

(5, 'Telefon ciri' ', 3, 7, 8);

Antaranya, lft dan rgt menerangkan hubungan hierarki antara kategori dan subkategori dan kategori induk boleh disoal secara rekursif.

Langkah 3: Tanya data terperingkat

Apabila menanyakan data terperingkat, kita boleh menggunakan pertanyaan rekursif contohnya seperti berikut:

fungsi getCategories($parentId = 0, $level = 0)

{
}

. Dalam fungsi ini, kami mula-mula menanyakan semua subkategori di bawah kategori induk semasa dan mengisihnya mengikut lvalue. Kemudian, dengan memanggil dirinya secara rekursif, subkategori subkategori disoal dan disimpan dalam medan kanak-kanak. Akhirnya, tatasusunan kategori dikembalikan.

Langkah 4: Paparkan data kategori

Apabila memaparkan data kategori, kita boleh menggunakan rekursif traversal Contohnya adalah seperti berikut:

🎜function showCategories($categories)🎜{🎜
$sql = 'SELECT * FROM `categories` WHERE `parent_id` = ? ORDER BY `lft` ASC';
$stmt = $pdo->prepare($sql);
$stmt->execute([$parentId]);
$categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!empty($categories)) {
    $level++;
    $categories = array_map(function ($category) use ($level) {
        $category['level'] = $level;
        $category['children'] = getCategories($category['id'], $level);
        return $category;
    }, $categories);
}

return $categories;
🎜}🎜 pertama kita tentukan. sama ada tatasusunan kategori kosong Jika tidak, lalu lintasi tatasusunan dan paparkan nama kategori. Kemudian, jika kategori mempunyai subkategori, panggil dirinya secara rekursif untuk memaparkan subkategori. 🎜🎜Kesimpulan🎜🎜Melalui empat langkah di atas, kita boleh melaksanakan fungsi pengelasan tanpa had dengan mudah, dan juga boleh menggunakan kaedah rekursif untuk memaparkan data terperingkat. Fungsi ini sangat biasa dalam pembangunan sebenar, terutamanya dalam e-dagang, berita, blog dan senario lain. Saya harap artikel ini dapat memberi inspirasi kepada pembangun PHP dan membantu mereka mengatasi keperluan pembangunan sebenar dengan lebih baik. 🎜

Atas ialah kandungan terperinci Cara menggunakan fungsi klasifikasi tanpa had dalam pembangunan PHP. 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