Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membina Struktur Pokok Hierarki daripada Tatasusunan Rata dalam PHP?

Bagaimana untuk Membina Struktur Pokok Hierarki daripada Tatasusunan Rata dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-27 18:33:15206semak imbas

How to Build a Hierarchical Tree Structure from a Flat Array in PHP?

Membina Struktur Pokok daripada Susunan Rata dalam PHP

Masalah:

Anda ada tatasusunan rata yang terdiri daripada elemen dengan medan 'id' dan 'parent_id', di mana setiap elemen mungkin mempunyai paling banyak satu induk dan sifar atau lebih ramai kanak-kanak. Apabila 'parent_id' ialah 0, elemen tersebut ialah item peringkat akar. Matlamatnya adalah untuk menyusun semula tatasusunan rata ini menjadi pokok hierarki dengan perhubungan anak-ibubapa.

Penyelesaian:

Fungsi yang disediakan, buildTree(), melaksanakan tugas ini dengan berkesan dengan mengulangi tatasusunan input dan membina struktur pokok secara rekursif. Setiap elemen dalam pepohon output mengandungi ID, ID induk dan tatasusunan elemen anak.

Pelaksanaan:

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;
            unset($elements[$element['id']]);
        }
    }

    return $branch;
}

'Nyahset' Panggilan:

Dalam kod di atas, panggilan unset() adalah penting untuk mengekalkan struktur hierarki. Ia mengalih keluar elemen yang diproses daripada tatasusunan input asal, memastikan elemen tidak diduplikasi dalam pepohon.

Contoh:

Pertimbangkan tatasusunan input yang disediakan:

[_319_] => [...],
[_320_] => [...],
[_321_] => [...],
[_322_] => [...],
[_323_] => [...],
[_324_] => [...],
[_325_] => [...]

Selepas diproses, pokok keluaran mengekalkan induk-anak perhubungan:

[_319_] => [...],
[_320_] => [
    'id' => '_320_',
    'parent_id' => 0,
    'children' => [
        [_321_] => [...],
        [_325_] => [...]
    ]
],
[_323_] => [
    'id' => '_323_',
    'parent_id' => 0,
    'children' => [
        [_324_] => [...]
    ]
]

Oleh itu, fungsi buildTree() membolehkan anda mengubah tatasusunan rata elemen dengan perhubungan induk-anak menjadi pepohon hierarki berstruktur dalam PHP.

Atas ialah kandungan terperinci Bagaimana untuk Membina Struktur Pokok Hierarki daripada Tatasusunan Rata dalam PHP?. 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