Rumah > Artikel > pembangunan bahagian belakang > Beberapa cara untuk melaksanakan subkategori pertanyaan gelung dengan cekap dalam PHP
PHP ialah bahasa skrip sebelah pelayan yang biasa digunakan yang digunakan secara meluas untuk pembangunan web. Dalam pembangunan PHP, kita sering menghadapi situasi di mana kita perlu bertanya dan memaparkan kategori dan subkategorinya. Artikel ini akan meneroka beberapa cara untuk melaksanakan subkategori pertanyaan gelung dengan cekap dan memberikan contoh kod khusus.
Rekursi ialah kaedah biasa untuk merentasi struktur pokok dan sesuai untuk menanyakan klasifikasi bersarang. Berikut ialah contoh kod untuk subkategori pertanyaan rekursif mudah:
function getSubcategories($category_id) { $subcategories = []; $query = "SELECT id, name FROM categories WHERE parent_id = $category_id"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { $subcategories[] = $row; $subcategories = array_merge($subcategories, getSubcategories($row['id'])); } return $subcategories; } $category_id = 1; $subcategories = getSubcategories($category_id); print_r($subcategories);
Fungsi penutupan ialah ciri PHP yang berkuasa, yang boleh mentakrifkan fungsi tanpa nama di dalam fungsi dan di luar pemindahan fungsi. Berikut ialah contoh kod yang menggunakan fungsi penutupan untuk melaksanakan subkategori pertanyaan:
$categories = []; $fetchCategories = function ($parent_id) use (&$fetchCategories, &$categories) { $query = "SELECT id, name FROM categories WHERE parent_id = $parent_id"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { $categories[] = $row; $fetchCategories($row['id']); } }; $fetchCategories(1); print_r($categories);
Dapatkan semua kategori dalam satu pertanyaan pangkalan data, dan kemudian gunakan kod PHP untuk membina Subkategori Pokok secara rekursif. Berikut ialah kod sampel:
$query = "SELECT id, name, parent_id FROM categories"; $result = mysqli_query($connection, $query); $categories = []; while ($row = mysqli_fetch_assoc($result)) { $categories[$row['id']] = $row; } $nestedCategories = []; foreach ($categories as $id => $category) { if ($category['parent_id'] == 0) { $nestedCategories[$id] = $category; } else { $categories[$category['parent_id']]['children'][$id] = $category; } } print_r($nestedCategories);
Melalui tiga kaedah di atas, kami boleh melaksanakan subkategori pertanyaan gelung dengan cekap. Memilih kaedah yang sesuai dengan keperluan projek dan struktur data boleh meningkatkan kecekapan kod dan mengurangkan bilangan pertanyaan pangkalan data, dengan itu mengoptimumkan prestasi program. Semoga kandungan di atas dapat membantu anda.
Atas ialah kandungan terperinci Beberapa cara untuk melaksanakan subkategori pertanyaan gelung dengan cekap dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!