Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Membina Susunan Berbilang Dimensi secara Rekursif daripada Hasil Pangkalan Data Rata?

Bagaimana untuk Membina Susunan Berbilang Dimensi secara Rekursif daripada Hasil Pangkalan Data Rata?

Barbara Streisand
Lepaskan: 2024-12-14 01:40:10
asal
263 orang telah melayarinya

How to Recursively Build a Multidimensional Array from Flat Database Results?

Membina Tatasusunan Berbilang Dimensi daripada Keputusan Pangkalan Data Secara Rekursif

Untuk mendapatkan semula struktur data hierarki, seperti menu halaman dan kategori, daripada hasil pangkalan data yang rata , fungsi rekursif boleh digunakan. Fungsi ini akan mengambil tatasusunan asal dan menyusunnya menjadi tatasusunan bersarang berdasarkan perhubungan ibu bapa-anak.

Fungsi:

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;
}
Salin selepas log masuk

Cara Ia Berfungsi :

  1. Fungsi ini mengambil pelbagai elemen dan ID induk pilihan, secara lalai kepada 0.
  2. Ia berulang pada setiap elemen dalam tatasusunan.
  3. Jika ID induk elemen sepadan dengan ID induk yang ditentukan, ia dianggap sebagai anak kepada induk tersebut.
  4. The fungsi secara rekursif memanggil dirinya sendiri untuk mencari semua kanak-kanak unsur anak semasa.
  5. Jika elemen itu mempunyai sebarang anak, ia ditambah sebagai tatasusunan di bawah kunci 'kanak-kanak' bagi elemen semasa.
  6. Akhir sekali, fungsi mengembalikan tatasusunan elemen anak untuk induk yang diberikan.

Contoh Penggunaan:

Untuk menukar hasil pangkalan data contoh kepada tatasusunan berbilang dimensi menggunakan ini fungsi:

$tree = buildTree($rows);
Salin selepas log masuk

Di mana $rows ialah tatasusunan asal hasil pangkalan data.

Output:

Tatasusunan hierarki yang terhasil akan menyerupai yang diingini keluaran:

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [title] => Parent Page
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 2
                                    [parent_id] => 1
                                    [title] => Sub Page
                                    [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 3
                                                            [parent_id] => 1
                                                            [title] => Sub Sub Page
                                                        )
                                                )
                                )
                        )
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 4
                                    [parent_id] => 0
                                    [title] => Another Parent Page
                                    [children] => Array
                                                (

                                                )
                                )
                        )
        )
)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Membina Susunan Berbilang Dimensi secara Rekursif 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan