Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Beberapa cara untuk melaksanakan subkategori pertanyaan gelung dengan cekap dalam PHP

Beberapa cara untuk melaksanakan subkategori pertanyaan gelung dengan cekap dalam PHP

PHPz
PHPzasal
2024-03-06 16:54:04438semak imbas

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.

Cara pertama: pertanyaan rekursif

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);

Cara kedua: gunakan fungsi penutupan

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);

Cara ketiga: Gunakan pertanyaan rekursif dan simpan dalam tatasusunan

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!

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