Bagaimana untuk Mengisih Tatasusunan PHP Berbilang Dimensi mengikut Pelbagai Medan?

Patricia Arquette
Lepaskan: 2024-11-20 03:07:01
asal
621 orang telah melayarinya

How to Sort a Multidimensional PHP Array by Multiple Fields?

Mengisih Tatasusunan mengikut Berbilang Nilai Medan dalam PHP

Masalah:

Anda mempunyai tatasusunan dengan struktur data yang kompleks dan anda perlu mengisih nilai berdasarkan berbilang nilai medan dalam tertib menaik.

Contoh:

Pertimbangkan tatasusunan berikut:

$array = [
    [
        "destination" => "Sydney",
        "airlines" => "airline_1",
        "one_way_fare" => 100,
        "return_fare" => 300
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_2",
        "one_way_fare" => 150,
        "return_fare" => 350
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_3",
        "one_way_fare" => 180,
        "return_fare" => 380
    ]
];
Salin selepas log masuk

Anda mahu mengisih tatasusunan ini dengan mula-mula "return_fare" dalam tertib menaik dan kemudian dengan "one_way_fare" juga dalam tertib menaik.

Penyelesaian:

Untuk mengisih tatasusunan seperti yang diterangkan, anda boleh menggunakan fungsi array_multisort(). Walau bagaimanapun, ia memerlukan anda mengekstrak nilai yang anda ingin isikan ke dalam tatasusunan berasingan. Ini boleh dilakukan menggunakan array_column().

// Extract "return_fare" and "one_way_fare" into separate arrays
$return_fare = array_column($array, 'return_fare');
$one_way_fare = array_column($array, 'one_way_fare');

// Sort the array using multiple criteria
array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $array);
Salin selepas log masuk

Selepas mengisih, $array akan diubah suai untuk mencerminkan susunan yang diisih.

Penyelesaian Alternatif:

Anda juga boleh menggunakan fungsi array_orderby() daripada halaman manual PHP untuk memudahkan kod di atas:

// Sort the array using "array_orderby"
$sorted = array_orderby($array, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Salin selepas log masuk

Nota:

Jika anda menggunakan PHP 5.5 atau lebih tinggi, anda boleh mengelakkan gelung dengan menggunakan array_column() terus dengan array_multisort():

array_multisort(
    array_column($array, 'return_fare'), SORT_ASC,
    array_column($array, 'one_way_fare'), SORT_ASC,
    $array
);
Salin selepas log masuk

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