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

Susan Sarandon
Lepaskan: 2024-11-07 00:52:02
asal
783 orang telah melayarinya

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  
Salin selepas log masuk

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

 array (

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

 );
Salin selepas log masuk

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;
Salin selepas log masuk

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());
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!