在 php 中按值排序數(shù)組,同時(shí)保留鍵名的方法是:使用 usort() 函數(shù)按值排序數(shù)組。向 usort() 函數(shù)傳遞一個(gè)匿名函數(shù)作為比較函數(shù),該函數(shù)返回元素值的差值。usort() 會(huì)根據(jù)匿名函數(shù)對(duì)數(shù)組進(jìn)行排序,同時(shí)保持鍵名不變。
如何在 PHP 中按值排序數(shù)組并保留鍵名?
在 PHP 中,可以使用 asort() 函數(shù)根據(jù)值對(duì)數(shù)組進(jìn)行升序排序,或使用 arsort() 函數(shù)進(jìn)行降序排序。但是,這兩個(gè)函數(shù)都會(huì)破壞數(shù)組中的鍵名。
如果要按值排序數(shù)組,同時(shí)保持鍵名,可以使用 usort() 函數(shù),如下所示:
$arr = array(
'a' => 10,
'b' => 5,
'c' => 20
);
usort($arr, function($a, $b) {
return $a - $b;
});
print_r($arr);
登錄后復(fù)制
輸出:
Array
(
[b] => 5
[a] => 10
[c] => 20
)
登錄后復(fù)制
在上面的代碼中:
usort() 接受兩個(gè)參數(shù):要排序的數(shù)組 $arr 和一個(gè)用于比較元素值的匿名函數(shù)。匿名函數(shù)接收兩個(gè)元素 $a 和 $b,并返回它們的差值。usort() 會(huì)對(duì)數(shù)組中的元素進(jìn)行排序,使用匿名函數(shù)作為比較函數(shù)。經(jīng)過排序后,數(shù)組中的鍵名保持不變。
實(shí)戰(zhàn)案例
考慮一個(gè)包含學(xué)生成績(jī)的數(shù)組:
$students = array(
'John' => 90,
'Jane' => 85,
'Peter' => 95
);
登錄后復(fù)制
要按成績(jī)升序排列學(xué)生姓名,同時(shí)保持姓名作為鍵名,可以使用以下代碼:
usort($students, function($a, $b) {
return $a - $b;
});
登錄后復(fù)制
輸出:
Array
(
[Jane] => 85
[John] => 90
[Peter] => 95
)
登錄后復(fù)制






