Fungsi pengisihan berangka baharu dalam PHP8.1
PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas yang biasa digunakan dalam pembangunan web. Bukan sahaja berkuasa, ia juga mempunyai perpustakaan fungsi terbina dalam yang kaya. Dalam versi PHP 8.1 yang dikeluarkan baru-baru ini, beberapa ciri dan fungsi menarik telah ditambah, termasuk fungsi pengisihan berangka. Fungsi baharu ini boleh memudahkan pembangun mengisih tatasusunan berangka, meningkatkan kecekapan pembangunan dan kebolehbacaan kod.
Dalam versi PHP yang lalu, kami biasanya menggunakan fungsi sort()
atau rsort()
untuk mengisih tatasusunan, tetapi fungsi ini menggunakan pengisihan kamus secara lalai, juga Ia diisih mengikut peraturan perbandingan rentetan. Ini boleh membawa kepada hasil yang tidak dijangka apabila menyusun tatasusunan nombor. Dalam PHP8.1, dua fungsi baharu, usort()
dan uasort()
, boleh digunakan untuk mengisih tatasusunan melalui peraturan pengisihan tersuai, termasuk pengisihan berangka . sort()
或rsort()
函数对数组进行排序,但这些函数默认使用的是字典排序,也就是按照字符串的比较规则进行排序。这样在对数字数组进行排序时,可能会得到不符合预期的结果。而在PHP8.1中,新增了usort()
和uasort()
两个函数,可以通过自定义的排序规则对数组进行排序,包括数字排序。
接下来,我们将介绍这两个新函数的用法,并通过示例代码演示它们的功能。
首先是usort()
函数,它接受两个参数:需要进行排序的数组和一个自定义的比较函数。该函数在排序过程中会多次调用自定义函数来比较数组中的元素,以确定它们的顺序。自定义函数需要返回一个整数值,表示两个元素的比较结果。
下面是一个使用usort()
函数对数字数组进行从小到大排序的示例代码:
$numbers = [5, 2, 8, 1, 9]; usort($numbers, fn($a, $b) => $a - $b); print_r($numbers);
输出结果为:Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 8 [4] => 9 )
。可以看到,数组中的数字已经按照从小到大的顺序进行了排序。
与usort()
函数类似,uasort()
函数也是接受两个参数:需要进行排序的数组和一个自定义的比较函数。不同之处在于,uasort()
函数在排序过程中会保留数组的键-值关系,而不仅仅是根据值进行排序。
下面是一个使用uasort()
函数对关联数组进行从大到小排序的示例代码:
$grades = [ 'Alice' => 85, 'Bob' => 92, 'Charlie' => 78, 'David' => 89 ]; uasort($grades, fn($a, $b) => $b - $a); print_r($grades);
输出结果为:Array ( [Bob] => 92 [David] => 89 [Alice] => 85 [Charlie] => 78 )
。可以看到,数组中的元素按照从大到小的顺序排列,并且键-值关系保持不变。
总结起来,PHP8.1新增的数字排序函数usort()
和uasort()
Seterusnya, kami akan memperkenalkan penggunaan kedua-dua fungsi baharu ini dan menunjukkan kefungsiannya melalui kod sampel.
Yang pertama ialah fungsi usort()
, yang menerima dua parameter: tatasusunan yang akan diisih dan fungsi perbandingan tersuai. Fungsi ini memanggil fungsi tersuai beberapa kali semasa proses pengisihan untuk membandingkan elemen dalam tatasusunan untuk menentukan susunannya. Fungsi tersuai perlu mengembalikan nilai integer yang mewakili hasil perbandingan dua elemen.
usort()
untuk mengisih tatasusunan nombor daripada kecil ke besar: 🎜rrreee🎜Hasil output ialah: Array ( [0] = >1 [1] => 2 [2] => Seperti yang anda lihat, nombor dalam tatasusunan telah diisih dari kecil ke besar. 🎜🎜Serupa dengan fungsi <code>usort()
, fungsi uasort()
juga menerima dua parameter: tatasusunan yang akan diisih dan fungsi perbandingan tersuai. Perbezaannya ialah fungsi uasort()
mengekalkan perhubungan nilai kunci tatasusunan semasa proses pengisihan, bukannya hanya mengisih berdasarkan nilai. 🎜🎜Berikut ialah contoh kod yang menggunakan fungsi uasort()
untuk mengisih tatasusunan bersekutu daripada besar ke kecil: 🎜rrreee🎜Hasil output ialah: Array ( [Bob] => ; 92 [ David] => 89 [Alice] => Seperti yang anda lihat, unsur-unsur dalam tatasusunan disusun daripada terbesar kepada terkecil, dan perhubungan nilai-kunci kekal tidak berubah. 🎜🎜Ringkasnya, fungsi pengisihan berangka baharu <code>usort()
dan uasort()
dalam PHP8.1 menyediakan pembangun dengan pilihan pengisihan yang lebih fleksibel, menjadikannya lebih mudah untuk mengisih berangka tatasusunan Pengisihan adalah lebih mudah dan cekap. 🎜Sama ada dari kecil ke besar atau besar ke kecil, kedua-dua fungsi ini dapat memenuhi keperluan pembangun melalui fungsi perbandingan yang disesuaikan. Dalam aplikasi praktikal, kita boleh memilih untuk menggunakan kedua-dua fungsi ini mengikut keperluan pengisihan yang berbeza untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod. 🎜🎜Jika anda masih menggunakan kaedah pengisihan lama untuk mengisih tatasusunan angka, anda juga boleh mencuba dua fungsi baharu ini, saya percaya ia akan mengejutkan anda. Marilah kami mengalu-alukan ciri baharu PHP8.1, meningkatkan kecekapan pembangunan dan menulis kod yang lebih elegan! 🎜Atas ialah kandungan terperinci Fungsi pengisihan berangka baharu dalam PHP8.1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!