105 Stimmen

Rückgabe des Index des höchsten Wertes in einem Array

Wie kann ich aus einem Array, das etwa so aussieht wie das folgende, den Index des höchsten Wertes im Array ermitteln? Für das unten stehende Array wäre das gewünschte Ergebnis "11".

Array (
    [11] => 14
    [10] => 9
    [12] => 7
    [13] => 7
    [14] => 4
    [15] => 6
)

240voto

drAlberT Punkte 20376

Meine Lösung ist:

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

Note :
Auf diese Weise können Sie Folgendes abrufen jede Taste bezogen auf eine bestimmte Maximalwert .

Wenn Sie nur an folgenden Themen interessiert sind ein Schlüssel unter allen verwenden Sie einfach $maxs[0]

51voto

Andrejs Cainikovs Punkte 25545
<?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 needle zurück, wenn er im Array gefunden wird, ansonsten FALSE.

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

12voto

David 天宇 Wong Punkte 3029

Ich weiß, dass diese Frage bereits beantwortet wurde, aber hier ist eine Lösung, die ich eleganter finde:

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

und voila!

5voto

luchaninov Punkte 6456

Andere Antworten haben vielleicht einen kürzeren Code, 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;
}

1voto

Aistina Punkte 12045

So sollte es gehen

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;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X