Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengisih Tatasusunan PHP dengan Pelbagai Medan?

Bagaimana untuk Mengisih Tatasusunan PHP dengan Pelbagai Medan?

Susan Sarandon
Lepaskan: 2024-11-22 10:18:11
asal
576 orang telah melayarinya

How to Sort a PHP Array by Multiple Fields?

PHP: Mengisih Tatasusunan mengikut Berbilang Nilai Medan

Soalan:

Bagaimana saya boleh mengisih tatasusunan dalam PHP mengikut dua atau lebih nilai medan, sama seperti menggunakan klausa "ORDER BY" dalam SQL?

Contoh Tatasusunan:

$data = [
    [
        "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

Isih Diingini:

Isih tatasusunan dalam tertib menaik "return_fare " dan kemudian dalam tertib menaik "one_way_fare".

Jawapan:

Fungsi PHP yang betul untuk mengisih tatasusunan mengikut berbilang nilai medan ialah array_multisort(). Berikut ialah contoh cara untuk mencapai pengisihan yang diingini:

// Extract the relevant columns
$return_fare = array_column($data, 'return_fare');
$one_way_fare = array_column($data, 'one_way_fare');

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

Penggunaan Ringkas dengan array_orderby()

Anda boleh memudahkan kod menggunakan fungsi array_orderby() daripada Manual PHP:

$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Salin selepas log masuk

Array dengan Array (Loops vs. array_column())

Jika tatasusunan anda mengandungi tatasusunan, anda boleh menggunakan gelung untuk mengekstrak nilai yang berkaitan sebelum mengisih:

$return_fare = [];
$one_way_fare = [];

foreach ($data as $row) {
    $return_fare[] = $row['return_fare'];
    $one_way_fare[] = $row['one_way_fare'];
}
Salin selepas log masuk

Atau, jika menggunakan PHP 5.5 atau lebih baru, anda boleh menggunakan array_column():

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

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan PHP dengan Pelbagai Medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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