Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengisihan lanjutan tatasusunan PHP: pembanding tersuai dan fungsi tanpa nama

Pengisihan lanjutan tatasusunan PHP: pembanding tersuai dan fungsi tanpa nama

王林
王林asal
2024-04-27 11:09:02458semak imbas

Dalam PHP, terdapat dua cara untuk mengisih tatasusunan dalam susunan tersuai: Pembanding tersuai: laksanakan antara muka Sebanding dan nyatakan peraturan perbandingan kedua-dua objek. Fungsi tanpa nama: Cipta fungsi tanpa nama sebagai pembanding tersuai untuk membandingkan dua objek dengan kriteria.

PHP 数组高级排序:自定义比较器和 匿名函数

PHP Isih Tatasusunan Terperinci: Pembanding Tersuai dan Fungsi Tanpa Nama

Dalam PHP, menyusun tatasusunan dalam susunan tersuai memerlukan kefungsian melebihi apa yang boleh disediakan oleh fungsi pengisihan standard. Pembanding tersuai dan fungsi tanpa nama menyediakan mekanisme pengisihan yang lebih fleksibel daripada fungsi terbina dalam seperti sort() dan rsort(). sort()rsort() 等内置函数更灵活的排序机制。

自定义比较器

自定义比较器是一种实现 Comparable 接口的类,它定义了如何比较两个对象。实现 compareTo()

Pembanding Tersuai

Pembanding tersuai ialah kelas yang melaksanakan antara muka Comparable, yang mentakrifkan cara membandingkan dua objek. Laksanakan kaedah compareTo() untuk menentukan objek yang dianggap lebih besar, kurang daripada atau sama dengan objek lain.

class CustomComparator implements Comparable {
    public function compareTo($a, $b): int {
        if ($a == $b) {
            return 0;
        }
        return $a > $b ? 1 : -1;
    }
}

Fungsi Tanpa Nama

Fungsi tanpa nama ialah fungsi tanpa nama yang boleh dibuat dengan pantas dan diluluskan sebagai hujah. Mereka sering digunakan untuk membuat pembanding tersuai:

$comparator = function($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a > $b ? 1 : -1;
};

Contoh praktikal

Pertimbangkan tatasusunan yang mengandungi nama dan markah pelajar:

$students = [
    ['name' => 'Alice', 'score' => 85],
    ['name' => 'Bob', 'score' => 90],
    ['name' => 'Carol', 'score' => 80],
];
Pendekatan pembanding tersuai

rreee

🎜🎜🎜🎜🎜 kod akan susun tatasusunan mengikut markah pelajar daripada terkecil kepada terbesar: 🎜
$comparator = new CustomComparator();
usort($students, [$comparator, 'compareTo']);

Atas ialah kandungan terperinci Pengisihan lanjutan tatasusunan PHP: pembanding tersuai dan fungsi tanpa nama. 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