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
DDDasal
2024-12-15 20:59:15557semak imbas

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

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!

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