Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengisih Tatasusunan PHP Berbilang Dimensi mengikut Medan Bersarang dengan Cekap?

Bagaimana untuk Mengisih Tatasusunan PHP Berbilang Dimensi mengikut Medan Bersarang dengan Cekap?

DDD
DDDasal
2024-12-02 00:52:14893semak imbas

How to Sort a Multidimensional PHP Array by a Nested Field Efficiently?

Bagaimana untuk Isih Tatasusunan PHP Berbilang Dimensi dengan Cekap oleh Medan Bersarang?

Dalam PHP, adalah mungkin untuk menemui tatasusunan berbilang dimensi yang mewakili data jadual , di mana setiap elemen memegang tatasusunan bersekutu pasangan nilai medan. Tugas mengisih data ini mengikut medan tertentu dalam tatasusunan bersarang boleh dicapai dengan mudah.

Pertimbangkan tatasusunan serupa pangkalan data berikut:

$data = [
    [
        'name' => 'Sony TV',
        'price' => 600.00
    ],
    [
        'name' => 'LG TV',
        'price' => 350.00
    ],
    [
        'name' => 'Samsung TV',
        'price' => 425.00
    ]
];

Untuk mengisih tatasusunan ini mengikut ' price', seseorang boleh menggunakan fungsi array_multisort() bersama-sama dengan fungsi array_column(), yang mengekstrak lajur (medan) tertentu daripada tatasusunan multidimensi. Coretan berikut mencapai ini:

array_multisort(array_column($data, 'price'), SORT_ASC, $data);

Panggilan ini akan menyusun semula tatasusunan dalam tertib menaik berdasarkan medan 'harga' sambil membuang kekunci tatasusunan luar asal. Tatasusunan diisih yang terhasil akan muncul sebagai:

[
    [
        'name' => 'LG TV',
        'price' => 350.00
    ],
    [
        'name' => 'Samsung TV',
        'price' => 425.00
    ],
    [
        'name' => 'Sony TV',
        'price' => 600.00
    ]
]

Sebagai alternatif, untuk versi PHP sebelum 8, penyelesaian dua lapis diperlukan kerana sekatan lulus rujukan:

$col = array_column($data, 'price');
array_multisort($col, SORT_ASC, $data);

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan PHP Berbilang Dimensi mengikut Medan Bersarang dengan Cekap?. 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