Rumah > pangkalan data > tutorial mysql > Bagaimana Mendapatkan Semua Nod Anak dan Keturunan untuk Ibu Bapa dalam MySQL Menggunakan PHP?

Bagaimana Mendapatkan Semua Nod Anak dan Keturunan untuk Ibu Bapa dalam MySQL Menggunakan PHP?

Barbara Streisand
Lepaskan: 2024-11-07 02:13:02
asal
747 orang telah melayarinya

How to Get All Child and Descendant Nodes for a Parent in MySQL Using PHP?

Dapatkan semua nod anak, cucu, dsb. di bawah ibu bapa menggunakan PHP dengan hasil pertanyaan MySQL

Artikel ini akan membimbing anda melalui kaedah untuk mendapatkan semua nod anak dan keturunan untuk ibu bapa tertentu menggunakan PHP dengan hasil pertanyaan MySQL. Teknik ini menghapuskan keperluan untuk membina tatasusunan berbilang dimensi struktur pokok dan membolehkan anda mendapatkan semua nod secara langsung.

Pertimbangkan jadual MySQL yang disusun sebagai senarai bersebelahan, di mana data hierarki diwakili dengan lajur untuk id, nama , dan parent_id. Pertanyaan SQL berikut boleh mendapatkan semula semua baris daripada jadual ini ke dalam tatasusunan bersekutu:

$r = mysql_query("SELECT * FROM test ");
$data = array();
while($row = mysql_fetch_assoc($r)) {
  $data[] = $row;
}
Salin selepas log masuk

Mari andaikan kita mahu menapis tatasusunan ini untuk nod di bawah induk dengan id 3, termasuk induk itu sendiri. Fungsi fetch_recursive tersuai ini boleh mencapai perkara ini:

function fetch_recursive($src_arr, $currentid, $parentfound = false, $cats = array()) {
  foreach($src_arr as $row) {
    if((!$parentfound && $row['id'] == $currentid) || $row['parent_id'] == $currentid) {
      $rowdata = array();
      foreach($row as $k => $v)
        $rowdata[$k] = $v;
      $cats[] = $rowdata;
      if($row['parent_id'] == $currentid)
        $cats = array_merge($cats, fetch_recursive($src_arr, $row['id'], true));
    }
  }
  return $cats;
}
Salin selepas log masuk

Untuk menggunakan fungsi ini, hantar tatasusunan $data yang diperolehi daripada pertanyaan sebagai hujah pertama dan id induk yang anda mahu dapatkan semula nod anak sebagai hujah kedua:

$list = fetch_recursive($data, 3);
Salin selepas log masuk

$list kini akan mengandungi tatasusunan bersekutu dengan semua nod anak dan nod induk (id 3) disertakan.

Penyelesaian ini mendapatkan semula semua nod anak dan keturunan untuk induk tertentu tanpa memerlukan pembinaan struktur pokok berbilang dimensi.

Atas ialah kandungan terperinci Bagaimana Mendapatkan Semua Nod Anak dan Keturunan untuk Ibu Bapa dalam MySQL Menggunakan 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