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

PHP 取得陣列中最大值對應的鍵名

     編輯:PHP 綜合知識

需求:從關聯陣列找出值最大的項目並取得其鍵名。例如找出班級最高分同學姓名。

方法一:asort() + end()(原文做法)

$arr = ['tom'=>9, 'jack'=>3, 'kim'=>5, 'hack'=>4];
asort($arr);           // 依值升序,保留鍵名
$keys = array_keys($arr);
$maxKey = end($keys);  // 取最後一個鍵
echo $maxKey; // tom

方法二:array_search() + max()(更直觀)

$maxKey = array_search(max($arr), $arr);
echo $maxKey; // tom

方法三:foreach 單次遍歷(效能最佳,O(n))

$maxKey = '';
$maxVal = -INF;
foreach ($arr as $k => $v) {
    if ($v > $maxVal) {
        $maxVal = $v;
        $maxKey = $k;
    }
}
echo $maxKey; // tom

多筆最大值並列處理

$maxVal = max($arr);
$maxKeys = array_keys($arr, $maxVal); // 返回所有最大值的鍵
print_r($maxKeys);

效能比較

方法時間複雜度備註
asort + endO(n log n)會修改原陣列順序
max + array_searchO(2n)遍歷兩次,程式碼簡潔
foreach 單次遍歷O(n)最快、不修改原陣列

依資料量與程式碼風格選擇;大量資料建議用單次遍歷。

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