Rumah > Soal Jawab > teks badan
P粉2855875902023-08-22 00:56:43
Ini adalah cara yang lebih baik untuk menggunakan penutupan
usort($your_data, function($a, $b) { return strcmp($a->name, $b->name); });
Sila ambil perhatian bahawa ini tiada dalam dokumentasi PHP, tetapi jika anda menggunakan versi 5.3+, penutupan disokong dan anda boleh menyediakan parameter boleh dipanggil.
P粉0200855992023-08-22 00:31:39
Menggunakan usort, berikut ialah contoh yang disesuaikan daripada manual:
function cmp($a, $b) { return strcmp($a->name, $b->name); } usort($your_data, "cmp");
Anda juga boleh menggunakan mana-mana boleh dipanggil sebagai parameter kedua. Berikut adalah beberapa contoh:
Gunakan fungsi tanpa nama (setakat PHP 5.3)
usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);});
Digunakan di dalam kelas
usort($your_data, array($this, "cmp")); // "cmp"应该是类中的一个方法
Gunakan fungsi anak panah (bermula dengan PHP 7.4)
usort($your_data, fn($a, $b) => strcmp($a->name, $b->name));
Selain itu, jika anda ingin membandingkan nilai berangka, fn($a, $b) => $a->count - $b->count
sebagai fungsi "perbandingan" harus diselesaikan masalahnya, Sebagai alternatif, jika anda ingin melakukan perkara yang sama dengan cara lain, bermula dengan PHP 7 anda boleh menggunakan Pengendali kapal angkasa fn($a, $b) => $a->count - $b->count
作为“比较”函数应该可以解决问题,或者,如果你想以另一种方式做同样的事情,从PHP 7开始你可以使用太空船操作符,像这样:fn($a, $b) => $a->count <=> $b->count
, seperti ini: fn($a, $b) => $a->count <=> $ b ->kira
.