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
Patricia Arquetteasal
2024-12-15 05:26:12878semak imbas

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,
        ],
    ]
)

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

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

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

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!

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