Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan kepada penggunaan fungsi usort() dalam pustaka fungsi PHP

Pengenalan kepada penggunaan fungsi usort() dalam pustaka fungsi PHP

王林
王林asal
2023-06-27 08:49:141501semak imbas

PHP ialah bahasa pengaturcaraan yang digunakan secara meluas dengan banyak fungsi yang biasa digunakan untuk digunakan oleh pembangun. usort() ialah salah satu daripadanya. Fungsi utama usort() adalah untuk mengisih tatasusunan mengikut fungsi perbandingan yang ditentukan. Sintaks fungsi

usort() adalah seperti berikut:

usort(array $array, callable $cmp_function): bool

Dalam kod di atas, $array mewakili tatasusunan yang hendak diisih dan $cmp_function ialah fungsi perbandingan boleh dipanggil. Nilai pulangan ialah jenis Boolean, menunjukkan sama ada pengisihan berjaya. $array 表示要排序的数组,$cmp_function 是一个可调用的比较函数。返回值是布尔类型,表示排序是否成功。

下面就对 usort() 函数进行详细介绍。

比较函数

usort() 函数中传入的比较函数必须是可调用的,也就是说可以被调用执行的函数。比较函数一般在调用 usort() 时定义,通过一个匿名函数或是指定函数名称的方式来定义。比如,你可以这样来定义一个比较函数:

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

在这个比较函数中,$a$b 分别代表 usort() 函数传入的要比较的两个参数。根据自己的需求,你可以自定义比较函数的实现方法。比较函数返回值可以是 0、-1 或 1。若返回 0,则代表两个参数相等;若返回 -1,则代表 $a$b 小;若返回 1,则代表 $a$b 大。

使用方法

接下来,我们来看一下如何使用 usort() 函数来对数组进行排序。假设我们有一个数组,其中包含如下元素:

$array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];

如果我们想对这个数组进行排序,可以使用 usort() 函数:

usort($array, "cmp");

这里的 "cmp"

Berikut ialah pengenalan terperinci kepada fungsi usort().

Fungsi perbandingan

usort() Fungsi perbandingan yang diluluskan dalam fungsi mestilah boleh dipanggil, iaitu fungsi yang boleh dipanggil dan dilaksanakan. Fungsi perbandingan biasanya ditakrifkan apabila memanggil usort(), sama ada melalui fungsi tanpa nama atau dengan menyatakan nama fungsi. Sebagai contoh, anda boleh mentakrifkan fungsi perbandingan seperti ini:

[1, 1, 2, 3, 3, 4, 5, 5, 6, 9]

Dalam fungsi perbandingan ini, $a dan $b masing-masing mewakili nilai yang dihantar oleh usort () fungsi untuk dibandingkan. Mengikut keperluan anda sendiri, anda boleh menyesuaikan kaedah pelaksanaan fungsi perbandingan. Nilai pulangan fungsi perbandingan boleh menjadi 0, -1, atau 1. Jika 0 dikembalikan, ini bermakna dua parameter adalah sama jika -1 dikembalikan, ini bermakna $a adalah lebih kecil daripada $b jika 1 dikembalikan, ini bermakna $a lebih besar daripada $b.

Cara menggunakan

Seterusnya, mari kita lihat cara menggunakan fungsi usort() untuk mengisih tatasusunan. Katakan kita mempunyai tatasusunan yang mengandungi elemen berikut:

$students = [
    ["name" => "Alice", "age" => 18],
    ["name" => "Bob", "age" => 20],
    ["name" => "Charlie", "age" => 19],
];

Jika kita ingin mengisih tatasusunan ini, kita boleh menggunakan fungsi usort():
    function cmp_age($a, $b) {
        if ($a["age"] == $b["age"]) {
            return 0;
        }
        return ($a["age"] < $b["age"]) ? -1 : 1;
    }
  1. "cmp" di sini ialah perbandingan yang kami takrifkan Nama fungsi. Selepas menjalankan kod di atas, anda boleh mendapatkan tatasusunan yang diisih:
  2. usort($students, "cmp_age");
  3. usort() fungsi bukan sahaja boleh mengisih nombor, tetapi juga rentetan, objek, dsb. Bayangkan kita mempunyai tatasusunan dengan berbilang objek, setiap satu dengan nilai atribut:
  4. [
        ["name" => "Alice", "age" => 18],
        ["name" => "Charlie", "age" => 19],
        ["name" => "Bob", "age" => 20],
    ]
  5. Jika kita ingin mengisih pelajar ini mengikut umur, kita boleh menggunakan fungsi usort() dan mentakrifkan fungsi perbandingan baharu:
  6. rrreee
  7. Dalam fungsi perbandingan ini , kami mengisih dengan membandingkan atribut umur objek pelajar. Gunakan fungsi usort() untuk mengisih tatasusunan pelajar ini:
  8. rrreee
Selepas menjalankan kod di atas, kita boleh mengisih pelajar mengikut umur mereka:

rrreee

Nota

Apabila menggunakan fungsi usort(), anda perlu memberi perhatian Soalan berikut: 🎜🎜🎜Fungsi perbandingan yang dihantar mesti boleh dipanggil, iaitu fungsi yang boleh dipanggil dan dilaksanakan. 🎜🎜Nilai pulangan bagi fungsi perbandingan mestilah 0, -1 atau 1. Fungsi 🎜🎜usort() akan mengubah suai tatasusunan asal secara langsung, jadi apabila menggunakannya, anda perlu memberi perhatian sama ada tatasusunan akan dirujuk dan digunakan di tempat lain. 🎜🎜Apabila terdapat dua atau lebih elemen yang sama dalam tatasusunan, fungsi usort() tidak dapat menjamin pesanannya. Fungsi 🎜🎜🎜Ringkasan🎜🎜usort() ialah fungsi yang sangat biasa digunakan dalam pembangunan PHP, ia boleh menyusun tatasusunan dengan mudah. Apabila menggunakannya, kita perlu mentakrifkan fungsi perbandingan dan menyerahkannya sebagai parameter kepada fungsi usort(). Terdapat beberapa butiran yang perlu diketahui, tetapi secara keseluruhan, menggunakan fungsi usort() adalah sangat mudah. 🎜

Atas ialah kandungan terperinci Pengenalan kepada penggunaan fungsi usort() dalam pustaka fungsi PHP. 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