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
Barbara Streisandasal
2024-12-02 15:33:15690semak imbas

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

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!

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