Mengisih Tatasusunan Objek mengikut Tarikh
Dalam PHP, kita sering menghadapi keperluan untuk mengisih tatasusunan objek mengikut sifat tertentu, seperti medan tarikh. Ini membolehkan kami memaparkan atau memanipulasi data kami dalam susunan kronologi.
Menyusun Semula Objek mengikut Tarikh
Pertimbangkan tatasusunan objek berikut, di mana setiap objek mewakili rekod dengan sifat tarikh:
<code class="php">$array = [ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ];</code>
Untuk mengisih objek ini mengikut sifat tarikhnya dalam tertib menaik (tertua dahulu), kita boleh menggunakan fungsi strtotime() dan fungsi usort().
Fungsi Perbandingan Tersuai
Untuk menggunakan usort(), kita perlu mentakrifkan fungsi perbandingan tersuai yang membandingkan dua objek berdasarkan sifat tarikhnya. Kod berikut mentakrifkan fungsi yang menolak cap masa (ditukar menggunakan strtotime()) tarikh objek pertama daripada cap masa tarikh objek kedua:
<code class="php">function cb($a, $b) { return strtotime($a['date']) - strtotime($b['date']); }</code>
Isih Array menggunakan usort()
Setelah kita mempunyai fungsi perbandingan, kita boleh memanggil usort() pada tatasusunan, menghantar fungsi perbandingan sebagai hujah kedua:
<code class="php">usort($array, 'cb');</code>
Contoh
Menggunakan tatasusunan contoh dari awal, tatasusunan diisih yang terhasil ialah:
<code class="php">[ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ]</code>
PHP 5.3 dan Ke Atas
Untuk PHP 5.3 dan ke atas, fungsi tanpa nama yang lebih ringkas boleh digunakan sebagai fungsi perbandingan:
<code class="php">usort($array, function($a, $b) { return strtotime($a['date']) - strtotime($b['date']); });</code>
Pendekatan ini mencapai hasil pengisihan yang sama seperti yang sebelumnya.
Atas ialah kandungan terperinci Bagaimana untuk Menyusun Susunan Objek mengikut Tarikh dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!