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

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

DDD
DDDasal
2024-12-16 03:10:09952semak imbas

How to Recursively Build a Multidimensional Array from Hierarchical Database Data?

Menjana Tatasusunan Berbilang Dimensi Secara Rekursif daripada Hasil Pangkalan Data

Dalam senario ini, matlamatnya adalah untuk membina perwakilan tatasusunan bersarang bagi data hierarki yang diambil daripada pertanyaan pangkalan data. Jadual hasil mengandungi halaman atau kategori dengan perhubungan ibu bapa-anak.

Untuk mencapainya, kami menggunakan fungsi rekursif, buildTree(). Fungsi ini mengambil tatasusunan elemen dan ID induk pilihan (lalai kepada 0). Ia berulang melalui setiap elemen, mengenal pasti elemen yang mempunyai ID induk yang ditentukan.

Untuk setiap elemen anak, fungsi memanggil dirinya secara rekursif untuk mendapatkan subpokoknya. Elemen kanak-kanak kemudiannya ditambah dengan anak-anaknya, menghasilkan struktur hierarki. Proses ini berterusan sehingga semua elemen diproses, menghasilkan tatasusunan bersarang yang mencerminkan struktur data hierarki.

Contoh

Pertimbangkan jadual pangkalan data yang disediakan sebelum ini:

id parent_id title
1 0 Parent Page
2 1 Sub Page
3 2 Sub Sub Page
4 0 Another Parent Page

Menggunakan fungsi buildTree(), kita boleh menjana nested yang dikehendaki tatasusunan:

$elements = [
    ['id' => 1, 'parent_id' => 0, 'title' => 'Parent Page'],
    ['id' => 2, 'parent_id' => 1, 'title' => 'Sub Page'],
    ['id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page'],
    ['id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page'],
];

$tree = buildTree($elements);

Output $tree ialah:

[
    [
        'id' => 1,
        'parent_id' => 0,
        'title' => 'Parent Page',
        'children' => [
            [
                'id' => 2,
                'parent_id' => 1,
                'title' => 'Sub Page',
                'children' => [
                    [
                        'id' => 3,
                        'parent_id' => 2,
                        'title' => 'Sub Sub Page',
                    ]
                ]
            ]
        ]
    ],
    [
        'id' => 4,
        'parent_id' => 0,
        'title' => 'Another Parent Page',
    ]
]

Tatasusunan bersarang ini mengekalkan perhubungan hierarki yang ditakrifkan dalam jadual pangkalan data, membolehkan capaian dan pemprosesan data yang cekap dalam bersarang struktur.

Atas ialah kandungan terperinci Bagaimana untuk Membina Susunan Berbilang Dimensi secara Rekursif daripada Data Pangkalan Data Hierarki?. 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