PHP的uasort函數是用于對數組進行自定義排序的函數,可以根據用戶自定義的比較函數對數組進行排序。然而,uasort函數并不保證排序的穩定性,也就是說如果兩個元素在比較時相等,它們的相對順序可能會發生變化。
如果要對數組進行穩定排序,可以使用usort函數結合自定義比較函數來實現。在自定義比較函數中,可以將相等的元素按照它們在原始數組中的順序進行排序,從而保證排序的穩定性。以下是一個示例代碼:
$array = [
['name' => 'Alice', 'age' => 25],
['name' => 'Bob', 'age' => 30],
['name' => 'Alice', 'age' => 20],
];
usort($array, function($a, $b) {
if ($a['name'] == $b['name']) {
return 0; // 相等時保持原始順序
}
return ($a['name'] < $b['name']) ? -1 : 1;
});
print_r($array);
在上面的示例中,我們使用usort函數和自定義比較函數對數組進行排序。如果兩個元素的’name’相等,比較函數返回0,保持它們在原始數組中的順序不變。這樣就實現了對數組的穩定排序。