Cara Mengisih Tatasusunan Bersekutu dengan Kunci dalam PHP [Pendua]
Mengisih tatasusunan boleh menjadi tugas biasa dalam pengaturcaraan, terutamanya apabila berurusan dengan struktur data seperti tatasusunan bersekutu dalam PHP. Tatasusunan ini serupa dengan tatasusunan biasa, tetapi membenarkan anda mengakses elemen melalui kekunci dan bukannya indeks berangka.
Masalah:
Anda mempunyai tatasusunan bersekutu dengan elemen seperti yang ditunjukkan di bawah:
Array ( [0] => Array ( [text] => tests [language] => [advertiserCompetitionScale] => 5 [avgSearchVolume] => 7480000 [lastMonthSearchVolume] => 9140000 ) [1] => Array ( [text] => personality tests [language] => [advertiserCompetitionScale] => 5 [avgSearchVolume] => 165000 [lastMonthSearchVolume] => 201000 ) [2] => Array ( [text] => online tests [language] => [advertiserCompetitionScale] => 5 [avgSearchVolume] => 246000 [lastMonthSearchVolume] => 301000 ) )
Anda mahu mengisih tatasusunan ini dalam tertib menurun berdasarkan Medan "avgSearchVolume".
Penyelesaian:
PHP menyediakan fungsi terbina dalam dipanggil usort yang boleh anda gunakan untuk tujuan ini. usort mengambil dua hujah: tatasusunan untuk diisih dan fungsi perbandingan. Fungsi perbandingan mengambil dua elemen tatasusunan sebagai argumen dan mengembalikan integer negatif, sifar atau integer positif:
Untuk mengisih tatasusunan anda, anda boleh mentakrifkan fungsi perbandingan seperti ini:
function cmp($a, $b) { return $b['avgSearchVolume'] - $a['avgSearchVolume']; }
Fungsi ini menolak medan "avgSearchVolume" unsur pertama daripada "avgSearchVolume " medan elemen kedua. Jika hasilnya negatif, bermakna elemen kedua harus didahulukan sebelum elemen pertama. Jika sifar, unsur-unsur dianggap sama. Jika ia positif, elemen pertama harus didahulukan sebelum yang kedua.
Akhir sekali, anda boleh memanggil usort dan lulus fungsi perbandingan anda sebagai hujah kedua:
usort($array, "cmp");
Selepas memanggil usort, tatasusunan anda akan diisih dalam tertib menurun mengikut medan "avgSearchVolume".
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Bersekutu Multidimensi dalam PHP dengan Kunci Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!