Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP dengan berbilang lajur menggunakan `array_multisort`?

Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP dengan berbilang lajur menggunakan `array_multisort`?

Patricia Arquette
Lepaskan: 2024-12-31 06:26:09
asal
959 orang telah melayarinya

How can I sort a multidimensional array in PHP by multiple columns using `array_multisort`?

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

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

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan