Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengisih Tatasusunan Objek dalam PHP mengikut Harta Tertentu?
Mengisih Tatasusunan Objek Mengikut Harta
Susun atur objek boleh ditemui dalam pelbagai senario pengaturcaraan. Objek ini mempunyai berbilang sifat, seperti nama dan kiraan. Menyusun objek ini berdasarkan sifat tertentu selalunya boleh terbukti berguna.
Menyesuaikan Fungsi Perbandingan: usort
PHP menyediakan fungsi usort untuk menyusun tatasusunan. Fungsi ini membenarkan penyesuaian fungsi perbandingan yang digunakan untuk pengisihan, membolehkan anda menentukan sifat yang mana objek akan dipesan.
Sintaks untuk usort adalah seperti berikut:
usort($array, $compare_function)
di mana $array ialah tatasusunan objek untuk diisih dan $compare_function ialah fungsi boleh panggil yang mentakrifkan perbandingan logik.
Contoh: Mengisih Objek mengikut Nama
Pertimbangkan tatasusunan objek berikut:
$array = [ (object) ['name' => 'Mary Jane', 'count' => 420], (object) ['name' => 'Johnny', 'count' => 234], (object) ['name' => 'Kathy', 'count' => 4354], ... ];
Untuk mengisih tatasusunan mengikut nama dalam menaik tertib, tentukan fungsi bandingkan berikut:
function cmp($a, $b) { return strcmp($a->name, $b->name); }
Fungsi ini membandingkan nama dua objek menggunakan fungsi strcmp, yang mengembalikan 1 jika $a->name lebih besar daripada $b->name, -1 jika kurang daripada, dan 0 jika sama.
Akhir sekali, gunakan usort dengan fungsi bandingkan untuk mengisih tatasusunan:
usort($array, 'cmp');
Perbandingan Alternatif Pilihan
Selain menggunakan fungsi bandingkan tersuai, usort menyokong pelbagai kaedah lain untuk mentakrifkan logik perbandingan, termasuk:
Fungsi tanpa nama (PHP 5.3 ):
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
Kaedah kelas:
usort($array, array($this, "cmp"));
Fungsi anak panah ( PHP 7.4 ):
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
Isih Nilai Angka
Apabila mengisih sifat berangka, seperti kiraan, anda boleh menggunakan operator kapal angkasa (<=>):
usort($array, fn($a, $b) => $a->count <=> $b->count);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisih Tatasusunan Objek dalam PHP mengikut Harta Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!