Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Membina Struktur Pokok dengan Cekap daripada Tatasusunan Rata dalam PHP?

Bagaimanakah Saya Boleh Membina Struktur Pokok dengan Cekap daripada Tatasusunan Rata dalam PHP?

Barbara Streisand
Lepaskan: 2024-12-02 15:33:15
asal
693 orang telah melayarinya

How Can I Efficiently Build a Tree Structure from a Flat Array in PHP?

Bina Pokok daripada Tatasusunan Rata dalam PHP

Dalam PHP, ia boleh mencabar untuk membina struktur data pokok daripada tatasusunan rata . Walau bagaimanapun, tugasan ini boleh dipermudahkan dengan menggunakan rekursi dan pemahaman tentang hubungan ibu bapa-anak dalam tatasusunan rata.

Memandangkan tatasusunan rata di mana setiap elemen mempunyai 'id' dan 'parent_id', objektif adalah untuk menukarnya menjadi pokok hierarki. Setiap elemen dalam pokok yang terhasil harus mempunyai sifat 'kanak-kanak' jika ia mempunyai elemen kanak-kanak.

Penyelesaian

Kod yang disediakan cuba mencipta pokok secara rekursif, tetapi ia gagal mengalih keluar elemen selepas menambahkannya pada cawangan, menyebabkan berbilang salinan elemen yang sama. Untuk menyelesaikan isu ini, kita perlu mengalih keluar elemen daripada tatasusunan rata selepas menambahkannya pada cawangan.

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

    return $branch;
}
Salin selepas log masuk

Penjelasan

  1. Kami melintasi tatasusunan, menyemak elemen yang mempunyai ID induk yang ditentukan.
  2. Jika elemen yang sepadan ditemui, kami menetapkannya kepada pembolehubah dan mengulangi untuk mengumpulkan anak-anaknya.
  3. Jika elemen itu mempunyai anak, kami menetapkan mereka kepada sifat 'anak-anak' elemen semasa.
  4. Selepas menambah elemen pada cawangan, kami mengeluarkannya daripada tatasusunan rata untuk mengelakkan pendua.
  5. Kami meneruskan proses ini secara rekursif sehingga keseluruhan pokok dibina.

The tatasusunan yang terhasil akan menjadi pepohon hierarki dengan setiap nod mengandungi anak-anaknya sebagai tatasusunan bersarang, memberikan gambaran yang jelas tentang perhubungan induk-anak dalam tatasusunan rata yang asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membina Struktur Pokok dengan Cekap daripada Tatasusunan Rata dalam PHP?. 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