Mengisih Tatasusunan mengikut Berbilang Nilai Medan dalam PHP
Masalah:
Anda mempunyai tatasusunan dengan struktur data yang kompleks dan anda perlu mengisih nilai berdasarkan berbilang nilai medan dalam tertib menaik.
Contoh:
Pertimbangkan tatasusunan berikut:
$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 ] ];
Anda mahu mengisih tatasusunan ini dengan mula-mula "return_fare" dalam tertib menaik dan kemudian dengan "one_way_fare" juga dalam tertib menaik.
Penyelesaian:
Untuk mengisih tatasusunan seperti yang diterangkan, anda boleh menggunakan fungsi array_multisort(). Walau bagaimanapun, ia memerlukan anda mengekstrak nilai yang anda ingin isikan ke dalam tatasusunan berasingan. Ini boleh dilakukan menggunakan array_column().
// Extract "return_fare" and "one_way_fare" into separate arrays $return_fare = array_column($array, 'return_fare'); $one_way_fare = array_column($array, 'one_way_fare'); // Sort the array using multiple criteria array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $array);
Selepas mengisih, $array akan diubah suai untuk mencerminkan susunan yang diisih.
Penyelesaian Alternatif:
Anda juga boleh menggunakan fungsi array_orderby() daripada halaman manual PHP untuk memudahkan kod di atas:
// Sort the array using "array_orderby" $sorted = array_orderby($array, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
Nota:
Jika anda menggunakan PHP 5.5 atau lebih tinggi, anda boleh mengelakkan gelung dengan menggunakan array_column() terus dengan array_multisort():
array_multisort( array_column($array, 'return_fare'), SORT_ASC, array_column($array, 'one_way_fare'), SORT_ASC, $array );
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan PHP Berbilang Dimensi mengikut Pelbagai Medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!