Fungsi Rekursif untuk Menghasilkan Tatasusunan Berbilang Dimensi daripada Hasil Pangkalan Data
Masalah:
Membina tatasusunan bersarang secara hierarki daripada jadual hasil rata , di mana setiap baris mewakili item dengan induknya ID.
Penyelesaian:
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$tree = buildTree($rows);
Salin selepas log masuk
Penjelasan:
Algoritma secara berulang membina struktur pokok hierarki menggunakan rekursi:
- Ia memulakan array $branch kosong untuk menyimpan tahap semasa daripada pokok.
- Ia berulang melalui elemen dan menyemak sama ada parent_id elemen sepadan dengan $parentId yang ditentukan.
- Jika padanan ditemui, ini bermakna elemen itu adalah anak kepada induk semasa dan harus ditambahkan pada $branch.
- Ia secara rekursif memanggil fungsi buildTree dengan id elemen sebagai yang baharu $parentId untuk mencari anak-anaknya.
- Jika mana-mana kanak-kanak ditemui, mereka akan ditambah sebagai sub-array kepada elemen semasa.
- Selepas memproses semua kanak-kanak, tatasusunan $branch dikembalikan kepada mewakili tahap hierarki seterusnya.
- Panggilan awal untuk buildTree dengan $parentId awal 0 mengambil elemen akar hierarki, dan panggilan rekursif mengisi struktur bersarang.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Rekursif Boleh Mencipta Tatasusunan Berbilang Dimensi daripada Hasil Pangkalan Data Rata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!