Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP dengan satu atau lebih kekunci?

Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP dengan satu atau lebih kekunci?

DDD
Lepaskan: 2025-01-05 12:34:43
asal
918 orang telah melayarinya

How can I sort multi-dimensional arrays in PHP by one or more keys?

Isih Tatasusunan Berbilang Dimensi Mengikut Nilai

Apabila bekerja dengan tatasusunan berbilang dimensi, mungkin perlu mengisih tatasusunan berdasarkan nilai kunci tertentu. Sebagai contoh, jika anda mempunyai tatasusunan yang mengandungi senarai imej, anda mungkin mahu mengisihnya mengikut tarikh atau saiznya.

Isih mengikut Kekunci Tunggal

Untuk mengisih tatasusunan mengikut satu kunci, anda boleh menggunakan fungsi usort(). Fungsi ini mengambil dua parameter: tatasusunan untuk diisih dan fungsi pengisihan. Fungsi pengisihan mesti mengambil dua parameter, yang mewakili dua elemen untuk dibandingkan.

Sebagai contoh, katakan kita mempunyai tatasusunan berikut dan kita mahu mengisihnya mengikut nilai kekunci "pesanan":

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)
Salin selepas log masuk

Untuk mengisih tatasusunan ini, kita boleh menggunakan fungsi pengisihan berikut:

function sortByOrder($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
}
Salin selepas log masuk

Kemudian, kita boleh menghantar fungsi ini kepada fungsi usort():

usort($myArray, 'sortByOrder');
Salin selepas log masuk

Selepas mengisih, tatasusunan akan disusun mengikut nilai kekunci "pesanan":

Array
(
    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )
)
Salin selepas log masuk

Isih mengikut Berbilang Kekunci

Untuk mengisih tatasusunan dengan berbilang kekunci, anda boleh menggunakan pendekatan berikut:

  1. Buat fungsi pengisihan yang membandingkan nilai kunci pertama.
  2. Jika nilai kunci pertama adalah sama, bandingkan nilai kunci kedua.
  3. Teruskan membandingkan nilai kunci seterusnya sehingga perbezaan adalah dijumpai.

Sebagai contoh, katakan kita mempunyai tatasusunan berikut dan kita mahu mengisihnya mengikut nilai kekunci "pesanan", dan kemudian dengan nilai kekunci "tajuk":

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 1
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Free
            [order] => 2
        )

    [3] => Array
        (
            [hashtag] => c1ede105cf8a54bbfb9f06542a9971bb
            [title] => Ready
            [order] => 3
        )
)
Salin selepas log masuk

Untuk mengisih tatasusunan ini, kita boleh menggunakan fungsi pengisihan berikut:

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP dengan satu atau lebih kekunci?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan