Tatasusunan berbilang dimensi boleh menjadi sukar untuk diisih, terutamanya apabila anda perlu mempertimbangkan berbilang lajur. Nasib baik, PHP membekalkan kami fungsi array_multisort(), yang membolehkan kami mengisih tatasusunan berdasarkan berbilang kriteria.
Pertimbangkan tatasusunan berbilang dimensi berikut:
[ ['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'] ]
Matlamat kami adalah untuk mengisih ini tatasusunan pertama mengikut keadaan, kemudian jenis_peristiwa, dan akhirnya mengikut tarikh_mula. Untuk mencapai matlamat ini, kami akan menggunakan array_multisort():
$sortData = []; foreach ($data as $key => $row) { $sortData['state'][$key] = $row['state']; $sortData['event_type'][$key] = $row['event_type']; $sortData['date_start'][$key] = $row['date_start']; } array_multisort($sortData['state'], SORT_ASC, $sortData['event_type'], SORT_ASC, $sortData['date_start'], SORT_ASC, $data);
Dalam versi PHP 5.5.0 dan lebih baru, kita boleh menggunakan fungsi array_column() untuk memudahkan proses pengisihan:
array_multisort(array_column($data, 'state'), SORT_ASC, array_column($data, 'event_type'), SORT_ASC, array_column($data, 'date_start'), SORT_ASC, $data);
Selepas mengisih, tatasusunan kami akan kelihatan seperti ini:
[ ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california'], ['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'], ['ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'] ]
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi dengan Berbilang Lajur dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!