首頁  >  文章  >  後端開發  >  PHP 陣列依數值排序後如何保持鍵名?

PHP 陣列依數值排序後如何保持鍵名?

PHPz
PHPz原創
2024-05-02 16:09:02624瀏覽

在 PHP 中按值排序數組,同時保留鍵名的方法是:使用 usort() 函數按值排序數組。向 usort() 函數傳遞匿名函數作為比較函數,該函數傳回元素值的差值。 usort() 會根據匿名函數對陣列進行排序,同時保持鍵名不變。

PHP 数组按值排序后如何保持键名?

如何在 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
)

以上是PHP 陣列依數值排序後如何保持鍵名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn