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!