Tatasusunan dalam PHP menyediakan struktur data yang berkuasa untuk mengatur dan menyimpan data. Walau bagaimanapun, mengisih tatasusunan berbilang dimensi berdasarkan nilai tertentu dalam tatasusunan dalaman boleh menjadi tugas yang mencabar.
Pertimbangkan jadual cincang PHP dengan struktur data berikut:
[ [ "type" => "suite", "name" => "A-Name" ], [ "type" => "suite", "name" => "C-Name" ], [ "type" => "suite", "name" => "B-Name" ] ]
Matlamatnya adalah untuk mengisih struktur data ini berdasarkan kekunci "nama" dalam tatasusunan dalam.
Pelbagai fungsi PHP boleh digunakan untuk menyusun tatasusunan:
Walau bagaimanapun, tiada satu pun daripada fungsi ini secara langsung menyokong pengisihan berdasarkan kunci dalam tatasusunan dalam.
Untuk mengatasi had ini, fungsi isihan tersuai boleh ditakrifkan untuk membandingkan nilai yang dikehendaki dalam tatasusunan dalam. Ini boleh dicapai menggunakan fungsi usort.
<code class="php">function cmp($a, $b) { return $b['name'] - $a['name']; }</code>
Fungsi ini membandingkan kekunci "nama" dalam tatasusunan dalam dan mengembalikan nilai negatif jika nama tatasusunan pertama lebih besar daripada nama tatasusunan kedua.
Setelah fungsi perbandingan ditakrifkan, ia boleh digunakan untuk mengisih tatasusunan menggunakan fungsi usort.
<code class="php">usort($mydata, "cmp");</code>
Penyelesaian alternatif kepada fungsi isihan tersuai adalah untuk mencipta tatasusunan baharu yang mengandungi hanya nilai untuk diisih. Ini boleh dilakukan dengan gelung bersarang dan pernyataan bersyarat.
<code class="php">function array_sort($array, $on, $order=SORT_ASC) { // ... return $new_array; }</code>
Fungsi ini mengambil tatasusunan untuk diisih, kunci untuk mengisih dan susunan pilihan (menaik atau menurun). Ia mengembalikan tatasusunan baharu dengan data yang diisih.
Fungsi array_sort boleh digunakan seperti berikut:
<code class="php">$mydata = [ ['type' => 'suite', 'name' => 'A-Name'], ['type' => 'suite', 'name' => 'C-Name'], ['type' => 'suite', 'name' => 'B-Name'] ]; $sorted_data = array_sort($mydata, 'name', SORT_ASC); print_r($sorted_data);</code>
Atas ialah kandungan terperinci Bagaimana Mengisih Tatasusunan Berbilang Dimensi Berdasarkan Nilai Tatasusunan Dalaman dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!