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