Mengisih Tatasusunan Berbilang Dimensi mengikut Berbilang Lajur
Mengisih tatasusunan berbilang dimensi boleh menjadi tugas yang mencabar, terutamanya apabila mempertimbangkan berbilang kriteria. Nasib baik, PHP menawarkan penyelesaian yang elegan dalam bentuk fungsi array_multisort.
Untuk mengisih tatasusunan berbilang dimensi, kita perlu mengekstrak lajur yang diperlukan dan menghantarnya ke array_multisort. Setiap lajur diisih secara berasingan, dengan susunan isihan ditentukan sebagai SORT_ASC atau SORT_DESC.
Sebagai contoh, diberikan tatasusunan input berikut:
$array = [ ['ID' => 1, 'title' => 'Boring Meeting', 'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'], ['ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'], ['ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'], ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california'] ];
Untuk mengisih mengikut keadaan, kemudian jenis_peristiwa, dan akhirnya date_start, kami akan menggunakan kod berikut:
# extract columns $state = array_column($array, 'state'); $event_type = array_column($array, 'event_type'); $date_start = array_column($array, 'date_start'); # sort by state desc, event_type asc, date_start asc array_multisort($state, SORT_DESC, $event_type, SORT_ASC, $date_start, SORT_ASC, $array);
PHP 5.5.0 memperkenalkan sintaks dipermudahkan menggunakan array_column:
array_multisort( array_column($array, 'state'), SORT_DESC, array_column($array, 'event_type'), SORT_ASC, $array );
Hasilnya, tatasusunan yang diisih kelihatan seperti:
[ ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california'], ['ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'], ['ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'], ['ID' => 1, 'title' => 'Boring Meeting', 'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'], ];
Dengan menggunakan array_multisort, kami mengisih tatasusunan berbilang dimensi berdasarkan berbilang lajur dengan berkesan, memberikan penyelesaian yang fleksibel dan berkuasa untuk organisasi dan pengambilan data.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP dengan berbilang lajur menggunakan `array_multisort`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!