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

Bagaimana untuk Mengisih Tatasusunan PHP dengan Pelbagai Medan?

Susan Sarandon
Susan Sarandonasal
2024-11-22 10:18:11496semak imbas

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
    ]
];

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);

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);

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'];
}

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);

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:
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