Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Pokok Menu Echo Menggunakan Fungsi Rekursif dalam PHP?

Bagaimana untuk Mencipta Pokok Menu Echo Menggunakan Fungsi Rekursif dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-10-27 06:58:291003semak imbas

 How to Create an Echo Menu Tree Using a Recursive Function in PHP?

Pokok Menu Gema dengan Fungsi Rekursif

Gambaran Keseluruhan Masalah

Mencipta fungsi rekursif untuk melintasi struktur menu hierarki yang disimpan dalam pangkalan data dan mengeluarkannya dalam HTML boleh mencabar. Memandangkan jadual dengan kategori dan kategori induknya, tugasnya ialah menjana pepohon menu yang mewakili hierarki secara visual.

Pendekatan Fungsi Rekursif

Untuk menyelesaikan masalah ini, fungsi rekursif diperlukan. Ideanya adalah untuk bermula dengan kategori akar, cari anak-anaknya dan panggil fungsi secara rekursif pada setiap kanak-kanak, membina output HTML semasa kita pergi.

Pelaksanaan Fungsi PHP

Berikut ialah kemungkinan pelaksanaan fungsi PHP:

<code class="php">function recurse($categories, $parent = null, $level = 0)
{
    $ret = '<ul>';
    foreach($categories as $index => $category)
    {
        if($category['root'] == $parent)
        {
            $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
            $ret .= $this->recurse($categories, $category['id'], $level+1);
            $ret .= '</li>';
        }
    }
    return $ret . '</ul>';
}</code>
  1. Ia memerlukan tiga parameter: $categories (susunan data kategori), $parent (ID kategori induk semasa) dan $level (yang menentukan tahap lekukan).
  2. Ia berulang melalui kategori dan menyemak sama ada akarnya sepadan dengan ID induk yang disediakan.
  3. Jika terdapat padanan, ia mengeluarkan nama kategori, dibalut dengan li dan elemen dengan kelas Tier yang sesuai untuk lekukan.
  4. Ia kemudian secara rekursif memanggil dirinya sendiri dengan peringkat kategori seterusnya, menetapkan ID induk baharu dan menambah tahap.

Penggunaan

Untuk menggunakan fungsi:

  1. Soal pangkalan data untuk mendapatkan semula semua kategori.
  2. Panggil recurse() dengan data kategori sebagai parameter pertama.
  3. Gemakan output HTML yang dikembalikan.

Mengendalikan Kategori Anak Kosong

Pelaksanaan awal mungkin menghasilkan

    elemen untuk kategori tanpa kanak-kanak. Untuk mengelakkan ini, anda boleh mengubah suai fungsi seperti:

    <code class="php">function recurse($categories, $parent = null, $level = 0)
    {
        $ret = '<ul>';
        foreach($categories as $index => $category)
        {
            if($category['root'] == $parent)
            {
                $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>';
                $sub = $this->recurse($categories, $category['id'], $level+1);
                if($sub != '<ul></ul>')
                    $ret .= $sub;
                $ret .= '</li>';
            }
        }
        return $ret . '</ul>';
    }</code>

    Pengubahsuaian ini memastikan bahawa hanya kategori dengan kanak-kanak mempunyai

      elemen.

      Sebagai alternatif, anda boleh menambah kiraan kanak-kanak pada setiap kategori dan hanya memasukkan

        jika bilangan kanak-kanak lebih besar daripada sifar.

        Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pokok Menu Echo Menggunakan Fungsi Rekursif 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