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

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

Patricia Arquette
Patricia Arquetteasal
2024-12-16 14:23:15113semak imbas

How can I sort a multidimensional array in PHP using multiple columns with `array_multisort()`?

Mengisih Tatasusunan Berbilang Dimensi mengikut Berbilang Lajur

Mengisih tatasusunan berbilang dimensi menggunakan berbilang kriteria boleh menjadi tugas yang rumit, tetapi ini penting untuk mengatur dan mendapatkan semula data dengan cekap. Soalan ini meneroka cara mengisih tatasusunan berbilang dimensi berdasarkan berbilang lajur menggunakan array_multisort().

Memahami array_multisort()

array_multisort() ialah fungsi PHP terbina dalam yang boleh menyusun tatasusunan dengan pelbagai kriteria. Ia memerlukan bilangan tatasusunan yang sewenang-wenangnya sebagai input, mewakili lajur untuk diisih mengikut. Elemen yang sepadan daripada setiap tatasusunan input dibandingkan untuk pengisihan.

Pelaksanaan

  1. Kenal pasti Kekunci Isih: Tentukan lajur yang anda mahu susun mengikut. Dalam kes ini, anda mempunyai 'keadaan,' 'event_type,' dan 'date_start.'
  2. Dapatkan Data Lajur: Cipta tatasusunan ($sort) untuk menyimpan nilai bagi jenis yang ditentukan kunci. Gelung melalui tatasusunan asal dan ekstrak data untuk setiap kunci.
  3. Isih Lajur: Panggil array_multisort() dengan tatasusunan $sort. Nyatakan susunan isihan yang diingini untuk setiap lajur (cth., SORT_DESC untuk 'keadaan').
  4. Kemas kini Tatasusunan Asal: Selepas mengisih, array_multisort() mengubah suai tatasusunan asal ($mylist).

Contoh Kod

$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'];
}

array_multisort($sort['state'], SORT_ASC,
                $sort['event_type'], SORT_DESC,
                $sort['date_start'], SORT_ASC,
                $mylist);

Keputusan:

Tatasusunan $mylist akan diisih dalam tertib menaik mengikut 'keadaan', tertib menurun mengikut 'event_type,' dan tertib menaik mengikut 'tarikh_mula.'

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengisih tatasusunan berbilang dimensi dalam PHP menggunakan berbilang lajur dengan `array_multisort()`?. 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