2009-09-22 8 views
65

다음과 같은 배열에서 배열의 가장 높은 값의 인덱스를 얻는 방법은 무엇입니까? 아래 배열의 경우 원하는 결과는 '11'이됩니다.배열에서 가장 큰 값의 인덱스를 반환하십시오.

Array (

    [11] => 14 
    [10] => 9 
    [12] => 7 
    [13] => 7 
    [14] => 4 
    [15] => 6 
) 
+0

오래되었지만 배열이 이미 정렬 된 것으로 나타납니다 (내림차순). 나쁜 예이거나 단지'reset ($ arr);이 필요하다. 에코 키 ($ arr);':) –

답변

162

내 솔루션은 다음과 같습니다

$maxs = array_keys($array, max($array)) 

참고 : 주어진 최대 값에 관련된 모든 키를 검색 할 수 있습니다
이런 식으로. 당신은 단지 모든 중 하나의 키에 관심이 있다면

단순히 사용 $ maxs [0]이 같은

+4

완벽. 고맙습니다! – Jeff

+1

Genial :) ..... –

+0

두 값이 같은지 확인하는 방법? – AlphaMale

1

뭔가 트릭을 할해야

function array_max_key($array) { 
    $max_key = -1; 
    $max_val = -1; 

    foreach ($array as $key => $value) { 
    if ($value > $max_val) { 
     $max_key = $key; 
     $max_val = $value; 
    } 
    } 

    return $max_key; 
} 
+3

첫 번째 항목의 키와 값을 기본 값으로 더 잘 사용하십시오. – Gumbo

0
$newarr=arsort($arr); 
$max_key=array_shift(array_keys($new_arr)); 
24
<?php 

$array = array(11 => 14, 
       10 => 9, 
       12 => 7, 
       13 => 7, 
       14 => 4, 
       15 => 6); 

echo array_search(max($array), $array); 

?> 

array_search() 반환 값 :

바늘이 배열에서 발견되면 키를 반환하고 그렇지 않으면 FALSE를 반환합니다.

haystack에서 바늘이 두 번 이상 발견되면 첫 번째 일치 키이 반환됩니다. 일치하는 모든 값의 키를 반환하려면 대신 array_keys()를 옵션 search_value 매개 변수와 함께 사용하십시오.

max(array_keys($values['Users'])); 
-7

기능은 더 높은 키가 얻을 수있는 마법처럼 http://www.php.net/manual/en/function.max.php

function max_key($array) { 
    foreach ($array as $key => $val) { 
     if ($val == max($array)) return $key; 
    } 
} 

$arr = array (
    '11' => 14, 
    '10' => 9, 
    '12' => 7, 
    '13' => 7, 
    '14' => 4, 
    '15' => 6 
); 

die(var_dump(max_key($arr))); 

작품에서

+7

성능에 대해 언급하지 않습니다. 배열을 통해 foreaching, 매번 최대 값을 확인하는 것은 "나쁜 습관"보다 더 나쁩니다. – bisko

+1

내 구현이 아니라고 언급했습니다. OP가 분명히 스스로 할 수없는 빠르고 더러운 복사/붙여 넣기였습니다. –

+1

거짓말하지 않으려 고, 너 나 좀 웃었어. 배열을 통해 반복 할 때마다 max()가 걱정됩니까? 그것은 "나쁜 습관보다 더 나쁜 것"입니다. 아니, 나는 그것이라고 믿지 않는다. 가장 우아하지는 않지만 작동합니다. – Sean

1

내 솔루션을 촬영 여기에 내가 더 우아한 해결책을 찾을 수 있습니다 :

arsort($array); 
reset($array); 
echo key($array); 

및 voila!

0
<?php 
$array = array (
    '11' => 14, 
    '10' => 9, 
    '12' => 7, 
    '13' => 7, 
    '14' => 4, 
    '15' => 6 
); 

foreach ($array as $key => $value) { 
    if ($value >= $max) 
     $max = max($array);   
} 
echo " The array in Maximum Value :".$max."<br/>"; 
?> 
6

나는 이미 대답 것을 알고 있지만, 다음과 같이

+0

'reset'은 필요하지 않습니다. btw. –

0

다른 답변에는 짧은 코드가 있지만이 코드는 가장 효율적이어야하며 이해하기 쉽습니다.

/** 
* Get key of the max value 
* 
* @var array $array 
* @return mixed 
*/ 
function array_key_max_value($array) 
{ 
    $max = null; 
    $result = null; 
    foreach ($array as $key => $value) { 
     if ($max === null || $value > $max) { 
      $result = $key; 
      $max = $value; 
     } 
    } 

    return $result; 
} 
관련 문제