Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengisih Tatasusunan Bersekutu Multidimensi dalam PHP dengan Kunci Tertentu?

Bagaimana untuk Mengisih Tatasusunan Bersekutu Multidimensi dalam PHP dengan Kunci Tertentu?

Barbara Streisand
Lepaskan: 2024-12-04 18:30:12
asal
971 orang telah melayarinya

How to Sort a Multidimensional Associative Array in PHP by a Specific Key?

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
        )

)
Salin selepas log masuk

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:

  • Integer negatif jika elemen pertama harus didahulukan sebelum elemen kedua.
  • Sifar jika dua elemen adalah sama.
  • Integer positif jika elemen kedua harus didahulukan sebelum yang pertama elemen.

Untuk mengisih tatasusunan anda, anda boleh mentakrifkan fungsi perbandingan seperti ini:

function cmp($a, $b)
{
    return $b['avgSearchVolume'] - $a['avgSearchVolume'];
}
Salin selepas log masuk

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

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!

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