首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP arsort() 函式詳解:依值降冪排序並保持鍵值關聯

     編輯:PHP 相關知識

前言

arsort() 是 asort() 的反向版本:依值由大到小排序(降冪),並保持鍵名與值的關聯關係。常用於排名榜、熱門統計、優先級排序等需「高分在前」的場景。

一、語法

arsort(array &$array, int $flags = SORT_REGULAR): bool
  • 參考傳遞,直接修改原陣列。
  • $flags 排序模式同 asort()。

二、實例程式碼與輸出

<?php
$data = [
    "US" => "United States",
    "IN" => "India",
    "DE" => "Germany",
    "ES" => "Spain"
];
arsort($data);
print_r($data);
?>

輸出結果:

Array
(
    [US] => United States
    [ES] => Spain
    [IN] => India
    [DE] => Germany
)

三、行為解析

  1. 依值字串降冪排序:"United States" > "Spain" > "India" > "Germany"。
  2. 鍵值關聯完整保留:"US" 仍對應 "United States"。
  3. 與 krsort() 差異:krsort() 依鍵名降冪(US, IN, ES, DE),arsort() 依值降冪,順序截然不同。

四、四大「保持關聯」排序函式總表

函式排序依據順序記憶口訣
asort()值升冪 (A→Z, 小→大)A = Ascending (值)
arsort()值降冪 (Z→A, 大→小)Ar = Ascending Reverse (值)
ksort()鍵名升冪K = Key 升冪
krsort()鍵名降冪Kr = Key Reverse 降冪

五、實務應用範例

1. 使用者積分排名(降冪)

 95,
    'userB' => 87,
    'userC' => 92,
    'userD' => 95
];
arsort($scores);
// 結果:userA(95), userD(95), userC(92), userB(87)
// 注意:相同值順序不保證穩定

2. 商品銷量熱門排行

 1250,
    'SKU002' => 3200,
    'SKU003' => 980
];
arsort($sales); // SKU002, SKU001, SKU003
foreach ($sales as $sku => $qty) {
    echo "$sku: $qty 件\n";
}

六、注意事項

  • 相同值順序不穩定:PHP 使用快速排序,相同值元素相對位置可能改變。需穩定排序請用 uasort() 搭配索引比較。
  • 混合型別值:數字與字串混合時結果難預測,建議統一型別或指定 SORT_NUMERIC/SORT_STRING。
  • 直接修改原陣列:若需保留原序,請先複製 $sorted = $data; arsort($sorted);。

七、總結

arsort() = 「依值降冪 + 保持關聯」。是排名、熱門、優先級排序的首選函式。搭配 asort() (升冪)、krsort() (鍵名降冪)、uasort() (自訂),構成完整排序工具鏈。核心三特性:修改原陣列、回傳 bool、值降冪、鍵值關聯不變。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved