Menggunakan fungsi perbandingan tersuai dalam PHP boleh mengisih tatasusunan dan mengekalkan nama kunci. Untuk melakukan ini, anda boleh menggunakan fungsi usort(), yang mengambil tatasusunan dan fungsi panggil balik sebagai parameter. Fungsi panggil balik menerima dua elemen tatasusunan dan mengembalikan integer (-1, 0, atau 1) yang menunjukkan susunan isihan.
Menggunakan fungsi perbandingan tersuai untuk mengisih tatasusunan ialah operasi biasa dalam operasi tatasusunan. Dalam PHP, ini boleh dicapai dengan mudah menggunakan fungsi usort()
. usort()
函数轻松实现此目的。
usort(array, callable)
以下示例展示了如何使用自定义比较函数对数组中的键名进行排序,同时保留键名:
<?php // 待排序的数组 $arr = [ 'a' => 10, 'c' => 5, 'b' => 20, ]; // 自定义比较函数 $compare = function ($a, $b) { return strcmp($a['key'], $b['key']); }; usort($arr, $compare); // 输出排序后的数组 print_r($arr);
在这个例子中,compare
函数将两个键名($a['key']
和 $b['key']
)作为参数,并使用 strcmp()
函数对其进行比较。strcmp()
函数返回 -1、0 或 1,指示第一个字符串是否小于、等于或大于第二个字符串。
调用 usort()
函数时,它将指定的比较函数应用于 $arr
数组中的每个元素。如果 compare
Array ( [a] => 10 [b] => 20 [c] => 5 )
rrreee
Dalam contoh ini, Fungsicompare
mengambil dua nama kunci ($a['key']
dan $b['key']
) sebagai parameter dan menggunakan The Fungsi strcmp()
membandingkannya. Fungsi strcmp()
mengembalikan -1, 0 atau 1, menunjukkan sama ada rentetan pertama kurang daripada, sama dengan atau lebih besar daripada rentetan kedua. Apabila fungsi usort()
dipanggil, ia menggunakan fungsi perbandingan yang ditentukan untuk setiap elemen dalam tatasusunan $arr
. Jika fungsi compare
mengembalikan -1, elemen pertama diisih sebelum elemen kedua jika ia mengembalikan 1, sebaliknya jika ia mengembalikan 0, susunan elemen kekal tidak berubah; 🎜🎜Keluaran akhir ialah: 🎜rrreee🎜 Tatasusunan diisih dari kecil ke besar mengikut nama kunci, sambil mengekalkan nama kunci. 🎜Atas ialah kandungan terperinci Bagaimana untuk mengisih tatasusunan menggunakan fungsi perbandingan tersuai dalam PHP dan mengekalkan nama kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!