Mengisih Tatasusunan Bersekutu mengikut Nilai dan Kekunci Numerik
Memandangkan tatasusunan bersekutu dengan kunci rentetan dan nilai angka, anda mahu mengisih tatasusunan mengikut nilai angka menurun dan kemudian mengikut abjad nama tag. Sebagai contoh, tatasusunan input:
$arrTags = [ 'mango' => 2, 'orange' => 4, 'apple' => 2, 'banana' => 3 ];
hendaklah dikeluarkan sebagai:
orange (4) banana (3) apple (2) mango (2)
Penyelesaian:
Satu pendekatan yang mungkin adalah menggunakan usort(). Walau bagaimanapun, anda memerlukan fungsi perbandingan tersuai yang mengisih mengikut nilai angka dahulu dan kemudian mengikut kekunci. Ini boleh dilakukan dengan mengisih dalam dua langkah: pertama, mengisih mengikut nilai angka menurun, dan kemudian mengisih mengikut nilai kunci menaik.
Untuk memudahkan kod, anda boleh menggunakan fungsi array_values() dan array_keys() untuk ekstrak nilai dan kunci ke dalam tatasusunan berasingan. Kemudian, gunakan array_multisort() untuk melakukan pelbagai jenis pada berbilang tatasusunan. Kod berikut akan menghasilkan output yang diingini:
array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Bersekutu mengikut Nilai Angka dan Kekunci dalam Susunan Menurun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!