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

Bagaimana untuk Mengisih Tatasusunan PHP dengan Berbilang Nilai Medan?

Patricia Arquette
Lepaskan: 2024-12-15 05:26:12
asal
874 orang telah melayarinya

How to Sort a PHP Array by Multiple Field Values?

Mengisih Tatasusunan PHP mengikut Berbilang Nilai Medan

Mengisih tatasusunan dengan berbilang nilai boleh menjadi rumit dalam PHP, tetapi terdapat beberapa pendekatan untuk mencapai ini . Satu penyelesaian biasa ialah menggunakan fungsi array_multisort().

Andaikan anda mempunyai tatasusunan seperti yang disediakan dalam soalan:

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

Untuk mengisih tatasusunan ini mengikut return_fare dan one_way_fare in tertib menaik, anda boleh menggunakan array_multisort() seperti berikut:

// Obtain a list of columns
foreach ($data as $key => $row) {
    $return_fare[$key]  = $row['return_fare'];
    $one_way_fare[$key] = $row['one_way_fare'];
}

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

Ini akan mengisih tatasusunan dalam susunan menaik bagi return_fare, dan kemudian dalam nilai return_fare yang sama, ia akan mengisih dalam tertib menaik bagi one_way_fare.

Pilihan lain ialah menggunakan fungsi array_orderby(), yang menyediakan sintaks yang dipermudahkan untuk mengisih mengikut berbilang kriteria :

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

Untuk mengelakkan gelung, anda juga boleh menggunakan array_column() (tersedia dalam PHP 5.5.0 atau lebih baru) untuk mengekstrak lajur yang dikehendaki dan kemudian gunakan array_multisort() pada lajur tersebut:

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 Berbilang Nilai 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