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
Barbara Streisandasal
2024-12-27 03:08:17552semak imbas

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)

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!

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