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
Lepaskan: 2024-12-20 15:28:14
asal
963 orang telah melayarinya

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']
]
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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']
]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan