Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membina Menu Pokok dengan Cekap dalam PHP dan MySQL dengan Satu Pertanyaan?

Bagaimana untuk Membina Menu Pokok dengan Cekap dalam PHP dan MySQL dengan Satu Pertanyaan?

DDD
DDDasal
2024-10-28 03:17:31684semak imbas

How to Efficiently Build Tree Menus in PHP and MySQL with a Single Query?

Membina Menu Pokok dalam PHP dan MySQL

Apabila cuba membina pepohon menu senarai tidak tersusun daripada pangkalan data MySQL dalam PHP, kecekapan prestasi adalah penting . Untuk mencapai matlamat ini, satu pertanyaan pangkalan data boleh digunakan dan rekursi boleh dielakkan.

Penyelesaian:

Fungsi PHP berikut mengambil tatasusunan objek halaman sebagai input, setiap satunya mengandungi ID, tajuk dan atribut ID induk. Ia secara rekursif menjana struktur senarai HTML melalui lintasan objek.

<code class="php">function build_menu($objects, $parent = 0) {
  $result  = "<ul>";

  foreach ($objects as $object) {
    if ($object['parent_id'] == $parent) {
      $result .= "<li>{$object['title']}";

      if (has_children($objects, $object['id'])) {
        $result .= build_menu($objects, $object['id']);
      }

      $result .= "</li>";
    }
  }

  $result .= "</ul>";
  return $result;
}</code>

Penggunaan:

Untuk menggunakan fungsi, susunan objek halaman boleh diambil semula daripada pangkalan data dan diluluskan sebagai hujah kepadanya. Fungsi ini akan mengembalikan struktur senarai HTML terformat yang mewakili pepohon menu.

<code class="php">$page_objects = get_page_objects_from_database();
$menu_html = build_menu($page_objects);</code>

Kecekapan Yang Dipertingkat:

Untuk kecekapan optimum, disyorkan untuk memesan keputusan menggunakan pertanyaan SQL. Ini memastikan bahawa objek diproses dalam urutan logik, meminimumkan perbandingan dan lelaran yang tidak perlu. Selain itu, lajur pemberat atau jujukan dalam skema pangkalan data boleh membantu dalam menyusun pokok menu.

Atas ialah kandungan terperinci Bagaimana untuk Membina Menu Pokok dengan Cekap dalam PHP dan MySQL dengan Satu Pertanyaan?. 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