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
DDDasal
2025-01-05 12:34:43943semak imbas

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
        )
)

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

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

usort($myArray, 'sortByOrder');

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
        )
)

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
        )
)

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!

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