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

PHP 取得陣列最大值對應鍵名:array_search + max 一行搞定

     編輯:PHP 綜合知識

需求:從關聯陣列 ['8213'=>0, '8212'=>100, '8172'=>10008] 找出值最大的鍵名(8172)。

最簡寫法

<?php
$hots = ['8213' => 0, '8212' => 100, '8172' => 10008];
$key = array_search(max($hots), $hots);
echo $key; // 8172

原理解析

  1. max($hots) 回傳最大值 10008
  2. array_search(10008, $hots) 回傳對應鍵名 8172

注意事項

情況行為對策
多個相同最大值回傳第一個遇到的鍵名若需全部,用 array_keys($arr, max($arr))
陣列為空max() 拋出 Warning、回傳 false先判斷 empty($arr)
值為非純量(陣列/物件)max() 比較規則複雜,不建議轉為純量或自訂比較函式

進階:取前 N 大鍵名

<?php
$hots = ['a'=>10, 'b'=>50, 'c'=>30, 'd'=>50, 'e'=>5];
arsort($hots); // 保持鍵值關聯,值由大到小排序
$top3 = array_slice($hots, 0, 3, true);
print_r(array_keys($top3)); // ['b', 'd', 'c']

效能提示

  • max() + array_search() 為兩次遍歷 O(2n),資料量極大(百萬級)可考慮單次遍歷手寫迴圈。
  • 一般Web 請求資料量(<10萬),內建函式效能足夠,可讀性最高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved