Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Mengisih Tatasusunan Objek dalam PHP mengikut Harta Tertentu?

Bagaimanakah Saya Boleh Mengisih Tatasusunan Objek dalam PHP mengikut Harta Tertentu?

Barbara Streisand
Lepaskan: 2024-12-27 03:08:17
asal
555 orang telah melayarinya

How Can I Sort an Array of Objects in PHP by a Specific Property?

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)
Salin selepas log masuk

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],
    ...
];
Salin selepas log masuk

Untuk mengisih tatasusunan mengikut nama dalam menaik tertib, tentukan fungsi bandingkan berikut:

function cmp($a, $b) {
    return strcmp($a->name, $b->name);
}
Salin selepas log masuk

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');
Salin selepas log masuk

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);
    });
    Salin selepas log masuk
  • Kaedah kelas:

    usort($array, array($this, "cmp"));
    Salin selepas log masuk
  • Fungsi anak panah ( PHP 7.4 ):

    usort($array, fn($a, $b) => strcmp($a->name, $b->name));
    Salin selepas log masuk

Isih Nilai Angka

Apabila mengisih sifat berangka, seperti kiraan, anda boleh menggunakan operator kapal angkasa (<=>):

usort($array, fn($a, $b) => $a->count <=> $b->count);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan