Mengisih Tatasusunan Berbilang Dimensi mengikut Tarikh
Mengisih data dalam tatasusunan berbilang dimensi boleh menjadi tugas biasa, terutamanya apabila menyusun maklumat dengan medan bertanda masa. Soalan ini meneroka cara mengisih tatasusunan rekod, di mana setiap rekod mengandungi medan "masa tarikh" dalam format "Y-m-d H:i:s".
Penyelesaian
Penyelesaian yang disediakan menggunakan fungsi usort(), yang mengambil fungsi perbandingan sebagai hujah kedua. Dalam kes ini, fungsi perbandingan date_compare() ditakrifkan:
function date_compare($a, $b) { $t1 = strtotime($a['datetime']); $t2 = strtotime($b['datetime']); return $t1 - $t2; }
Fungsi ini mengekstrak cap masa UNIX daripada medan "datetime" dan mengembalikan perbezaannya. Nilai negatif menunjukkan bahawa argumen pertama lebih awal dalam masa, manakala nilai positif menunjukkan bahawa argumen kedua lebih awal.
Dengan menghantar fungsi perbandingan ini kepada usort(), tatasusunan diisih dalam tertib menaik berdasarkan " medan datetime":
usort($array, 'date_compare');
Memperhalusi Pendekatan
Apabila bekerja dengan tatasusunan tatasusunan, adalah penting untuk menjelaskan terminologi. Sub-array individu dirujuk sebagai "rekod," dan keseluruhan koleksi ialah "array of record."
Peranan Pengguna
usort() menyediakan mekanisme pengisihan yang berharga. Ia mengambil dua rekod pada satu masa dan memanggil fungsi perbandingan dengannya. Nilai pulangan fungsi perbandingan menentukan cara usort() menyusun semula elemen. Apabila nilainya negatif, rekod pertama diletakkan sebelum yang kedua; apabila positif, rekod kedua mendahului yang pertama; dan apabila sifar, ia kekal dalam susunan yang sama.
Menggunakan Penyelesaian
Dalam kes khusus ini, fungsi perbandingan date_compare() menentukan susunan temporal rekod . Jika cap masa rekod pertama lebih awal, nilai negatif dikembalikan, menyebabkan ia diletakkan sebelum rekod kedua. Begitu juga, nilai pulangan positif menunjukkan bahawa rekod kedua adalah lebih awal, dan nilai sifar menunjukkan bahawa cap masa adalah sama. usort() menggunakan perbandingan ini untuk menyusun semula tatasusunan supaya rekod disusun mengikut kronologi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Tatasusunan Berbilang Dimensi mengikut Tarikh dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!