Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengisih Tatasusunan Berbilang Dimensi dengan Berbilang Lajur dalam PHP?

Bagaimanakah Saya Boleh Mengisih Tatasusunan Berbilang Dimensi dengan Berbilang Lajur dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-12-17 14:07:10387semak imbas

How Can I Sort a Multidimensional Array by Multiple Columns in PHP?

Mengisih Tatasusunan Berbilang Dimensi mengikut Berbilang Lajur

Mengisih tatasusunan berbilang dimensi mengikut berbilang lajur boleh menjadi tugas yang mencabar. Walau bagaimanapun, PHP menyediakan pelbagai fungsi yang menjadikannya agak mudah.

Salah satu fungsi tersebut ialah array_multisort(). Fungsi ini membolehkan anda mengisih tatasusunan mengikut berbilang kriteria secara serentak. Untuk menggunakan array_multisort(), anda mesti mencipta tatasusunan lajur isihan dan data sepadannya dahulu.

Berikut ialah contoh:

<?php
$mylist = array(
    array('ID' => 1, 'title' => 'Boring Meeting', 'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'),
    array('ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'),
    array('ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'),
    array('ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california')
);

# get a list of sort columns and their data to pass to array_multisort
$sort = array();
foreach($mylist as $k => $v) {
    $sort['state'][$k] = $v['state'];
    $sort['event_type'][$k] = $v['event_type'];
    $sort['date_start'][$k] = $v['date_start'];
}

# sort by state asc, event_type desc, and date_start asc
array_multisort($sort['state'], SORT_ASC, $sort['event_type'], SORT_DESC, $sort['date_start'], SORT_ASC, $mylist);

print_r($mylist); // print the sorted array

?php>

Setakat PHP 5.5.0, anda boleh menggunakan berikut sintaks yang dipermudahkan:

<?php
array_multisort(array_column($mylist, 'state'), SORT_ASC,
                array_column($mylist, 'event_type'), SORT_DESC,
                array_column($mylist, 'date_start'), SORT_ASC,
                $mylist);
?php>

Susun atur $mylist kini akan diisih mengikut lajur yang ditentukan dalam pesanan yang dikehendaki.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh 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