Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi dengan Berbilang Lajur dalam PHP?

Bagaimana untuk Mengisih Tatasusunan Berbilang Dimensi dengan Berbilang Lajur dalam PHP?

DDD
DDDasal
2024-12-20 15:28:14927semak imbas

How to Sort a Multidimensional Array by Multiple Columns in PHP?

Cara Mengisih Tatasusunan Berbilang Dimensi mengikut Berbilang Lajur

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!

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