Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Fungsi Rekursif Boleh Mencipta Tatasusunan Berbilang Dimensi daripada Hasil Pangkalan Data Rata?

Bagaimanakah Fungsi Rekursif Boleh Mencipta Tatasusunan Berbilang Dimensi daripada Hasil Pangkalan Data Rata?

DDD
Lepaskan: 2024-12-15 20:59:15
asal
557 orang telah melayarinya

How Can a Recursive Function Create a Multidimensional Array from a Flat Database Result?

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:

  1. Ia memulakan array $branch kosong untuk menyimpan tahap semasa daripada pokok.
  2. Ia berulang melalui elemen dan menyemak sama ada parent_id elemen sepadan dengan $parentId yang ditentukan.
  3. Jika padanan ditemui, ini bermakna elemen itu adalah anak kepada induk semasa dan harus ditambahkan pada $branch.
  4. Ia secara rekursif memanggil fungsi buildTree dengan id elemen sebagai yang baharu $parentId untuk mencari anak-anaknya.
  5. Jika mana-mana kanak-kanak ditemui, mereka akan ditambah sebagai sub-array kepada elemen semasa.
  6. Selepas memproses semua kanak-kanak, tatasusunan $branch dikembalikan kepada mewakili tahap hierarki seterusnya.
  7. 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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan