Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi dalam PHP dengan Kunci Tertentu?

Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi dalam PHP dengan Kunci Tertentu?

Patricia Arquette
Lepaskan: 2024-12-20 11:35:08
asal
121 orang telah melayarinya

How to Sort a Multi-Dimensional Array in PHP by a Specific Key?

Mengisih Tatasusunan Berbilang Dimensi dengan Kunci Tertentu

Mengisih tatasusunan berbilang dimensi mengikut nilai kunci tertentu boleh dicapai menggunakan pelbagai kaedah dalam PHP. Mari terokai masalah biasa dan penyelesaiannya menggunakan teknik ini.

Masalah:

Bagaimanakah kita mengisih tatasusunan berdasarkan kekunci "pesanan"?

Array's Struktur:

$myArray = [
    [
        'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4',
        'title'   => 'Flower',
        'order'   => 3
    ],
    [
        'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
        'title'   => 'Free',
        'order'   => 2
    ],
    [
        'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
        'title'   => 'Ready',
        'order'   => 1
    ]
];
Salin selepas log masuk

Penyelesaian:

1. Menggunakan usort dengan Fungsi Tersuai:

Kaedah ini melibatkan penentuan fungsi pengisihan tersuai yang membandingkan nilai "urutan" dan mengembalikan hasil perbandingan yang sesuai.

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

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

2. Menggunakan Fungsi Tanpa Nama:

Dalam PHP 5.3 dan lebih baharu, fungsi tanpa nama boleh digunakan untuk memudahkan fungsi pengisihan tersuai.

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

3. Menggunakan Operator Kapal Angkasa (PHP 7 dan lebih baru):

PHP 7 memperkenalkan pengendali kapal angkasa (< =>) untuk operasi perbandingan yang ringkas.

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

4. Menggunakan Fungsi Anak Panah (PHP 7.4 dan lebih baru):

Fungsi anak panah memudahkan lagi kod dengan menghapuskan kata kunci fungsi.

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

Isih Berbilang Dimensi:

Untuk tatasusunan dengan struktur bersarang, anda boleh melanjutkan fungsi pengisihan untuk mempertimbangkan berbilang kunci. Ini membenarkan pengisihan kompleks, seperti mengisih mengikut "perintah" dalam "subperintah."

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

Nota: Jika anda perlu mengekalkan perkaitan utama, pertimbangkan untuk menggunakan uasort() dan bukannya usort().

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