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
Barbara Streisandasal
2024-12-04 18:30:12973semak imbas

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
        )

)

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'];
}

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!

Kenyataan:
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