Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai dalam PHP?

Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-23 12:21:11887semak imbas

How to Sort a Multi-dimensional Array by Value in PHP?

Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai

Dalam tatasusunan berbilang dimensi, anda mungkin menghadapi keperluan untuk mengisih elemennya berdasarkan nilai kunci tertentu. Sebagai contoh, pertimbangkan tatasusunan berikut:

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

Isih mengikut Kekunci "pesanan"

Untuk mengisih tatasusunan mengikut kekunci "pesanan", anda boleh menggunakan fungsi usort(). Berikut ialah pecahan menyeluruh penggunaannya:

PHP 5.2 atau Terdahulu:

Tentukan fungsi isihan dahulu:

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

PHP 5.3 dan Kemudian:

Gunakan tanpa nama fungsi:

usort($myArray, function($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
});

PHP 7:

Gunakan operator kapal angkasa:

usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});

PHP 7.4:

Gunakan anak panah fungsi:

usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);

Isih Berbilang Dimensi:

Untuk isihan berbilang dimensi, ubah suai fungsi isihan untuk merujuk elemen isihan berikutnya jika elemen pertama adalah sifar. Contohnya:

usort($myArray, function($a, $b) {
    $retval = $a['order'] <=> $b['order'];
    if ($retval == 0) {
        $retval = $a['suborder'] <=> $b['suborder'];
        if ($retval == 0) {
            $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
        }
    }
    return $retval;
});

Persatuan Utama

Jika anda perlu mengekalkan persatuan utama, gunakan uasort() dan bukannya usort().

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai dalam PHP?. 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