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
Lepaskan: 2024-12-23 12:21:11
asal
894 orang telah melayarinya

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

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

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

PHP 7:

Gunakan operator kapal angkasa:

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

PHP 7.4:

Gunakan anak panah fungsi:

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

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

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!

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