2009-09-22 7 views
65

Von einem Array, das wie folgt aussieht, wie kann ich den Index des höchsten Werts im Array abrufen. Für das Array unten wäre das gewünschte Ergebnis "11".Return-Index des höchsten Werts in einem Array

Array (

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

Es ist eine Weile her, aber Ihr Array scheint bereits sortiert (absteigend); entweder ist es ein schlechtes Beispiel oder du brauchst nur 'reset ($ arr); echo key ($ arr); ':) –

Antwort

162

Meine Lösung ist:

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

Hinweis:
diese Weise können Sie jeden Schlüssel im Zusammenhang mit einem bestimmten Maximalwert abrufen können.

Wenn Sie nur unter allen einfach in einen Schlüssel interessiert verwenden $ maxs [0]

+4

Perfekt. Vielen Dank! – Jeff

+1

Genial :) ..... –

+0

Wie zu sehen, ob zwei Werte gleich sind? – AlphaMale

1

So etwas sollte den Trick

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

Benutze den Schlüssel und Wert des ersten Elements besser als Standardwert. – 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() gibt Werte zurück:

Gibt den Schlüssel für die Nadel zurück, wenn sie im Array gefunden wird, andernfalls FALSE.

Wenn Nadel im Heuhaufen mehr als einmal gefunden wird, wird der erste übereinstimmende Schlüssel zurückgegeben. Um die Schlüssel für alle übereinstimmenden Werte zurückzugeben, verwenden Sie stattdessen array_keys() mit dem optionalen Parameter search_value.

-7

Funktion genommen von 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))); 

Arbeiten wie ein Charme

+7

Um nicht über Leistung zu sprechen. Forschen durch Array, jedes Mal den Maximalwert zu überprüfen, ist noch schlimmer als "schlechte Praxis". – bisko

+1

Ich erwähnte seine nicht meine Implementierung. Es war eine schnelle und schmutzige Kopie/Paste, die der OP offensichtlich selbst nicht tun konnte, Herr. –

+1

Ich werde nicht lügen, du hast mich ein wenig zum Lachen gebracht. Sie sind besorgt über max() für jede Iteration durch das Array? Es ist "schlimmer als schlechte Praxis". Nein, ich glaube nicht. Es ist nicht das eleganteste, aber es funktioniert. – Sean

1

Meine Lösung der höheren Schlüssel zu bekommen, ist wie folgt:

max(array_keys($values['Users'])); 
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

Ich weiß, es ist schon beantwortet, aber Hier ist eine Lösung, die ich eleganter finde:

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

und voila!

+0

das 'reset' ist nicht notwendig, zw. –

0

Andere Antworten können einen kürzeren Code haben, aber dieser sollte der effizienteste sein und ist leicht zu verstehen.

/** 
* 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; 
} 
Verwandte Themen