Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menukar Keputusan Pangkalan Data kepada Tatasusunan Berbilang Dimensi Menggunakan Jadual Penutupan?

Bagaimana untuk Menukar Keputusan Pangkalan Data kepada Tatasusunan Berbilang Dimensi Menggunakan Jadual Penutupan?

Susan Sarandon
Susan Sarandonasal
2024-11-07 00:52:02863semak imbas

How to Convert Database Results into a Multidimensional Array Using a Closure Table?

Menukar Keputusan Pangkalan Data kepada Tatasusunan Berbilang Dimensi

Dalam bidang pengurusan data, selalunya perlu untuk mengatur dan mempersembahkan struktur data hierarki dalam pengguna -format mesra dan mudah dihadam. Untuk mencapai matlamat ini, pendekatan "Jadual penutupan" boleh menjadi penyelesaian yang berkesan. Teknik ini memerlukan pengekalan jadual berasingan untuk menyimpan perhubungan antara elemen hierarki, yang dikenali sebagai jadual Penutupan.

Dengan menggunakan jadual Penutupan, anda boleh mendapatkan subpokok dengan cekap dan menjana susunan data hierarki. Sebagai contoh, pertimbangkan contoh berikut:

Table Categories:

ID         Name
1          Top value
2          Sub value1

Table CategoryTree:

child     parent     level
1          1         0
2          2         0  
2          1         1  

Objektifnya adalah untuk mendapatkan data hierarki sebagai tatasusunan berbilang dimensi. Output yang diingini akan menyerupai yang berikut:

 array (

 'topvalue' = array (
                     'Subvalue',
                     'Subvalue2',
                     'Subvalue3)
                     );

 );

Untuk mencapai ini, kami boleh memanfaatkan pertanyaan SQL dan teknik pemprosesan baris. Pertimbangkan pseudokod berikut:

while ($rowData = fetch()) {
  $row = new RowObject($rowData);
  $nodes[$row["tsn"]] = $row;
  if (array_key_exists($row["_parent"], $nodes)) {
    $nodes[$row["_parent"]]->addChildRow($row);
  } else {
    $top = $row;
  }
}
return $top;

Di sini, kami mentakrifkan kelas untuk baris dan set baris, dengan set baris mewakili tatasusunan baris dan baris mengandungi tatasusunan data baris bersekutu bersama set baris untuk anak-anaknya . Kami juga mentakrifkan kaedah dalam baris dan set baris untuk membuang data mereka sebagai tatasusunan biasa secara rekursif.

Akhir sekali, kami boleh menggunakan keseluruhan sistem ini seperti berikut:

// Get an instance of the taxonomy table data gateway 
$tax = new Taxonomy();

// query tree starting at Rodentia (id 180130), to a depth of 2
$tree = $tax->fetchTree(180130, 2);

// dump out the array
var_export($tree->toArrayDeep());

Proses ini membolehkan fleksibel dan manipulasi data hierarki yang boleh disesuaikan, menyediakan pendekatan yang elegan dan teratur untuk mempersembahkan perhubungan yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Keputusan Pangkalan Data kepada Tatasusunan Berbilang Dimensi Menggunakan Jadual Penutupan?. 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