Minęło trochę czasu, ale twoja tablica wydaje się już posortowana (malejąco); albo to zły przykład, albo naprawdę po prostu potrzebujesz reset($arr); echo key($arr);:)
Ja͢ck
Odpowiedzi:
209
Moje rozwiązanie to:
$maxs = array_keys($array, max($array))
Uwaga: w
ten sposób możesz pobrać każdy klucz związany z daną wartością maksymalną .
Jeśli interesuje Cię tylko jeden klucz spośród wszystkich, po prostu użyj $ maxs [0]
możesz sprawdzić wynik, jeśli ma dwie lub więcej wartości, jeśli ma duplikaty
Julio Popócatl
@AlphaMale masz na myśli dwa klucze, jak przypuszczam, ponieważ maksymalna wartość jest tylko jeden z definicji .. @JustinE jeśli nie chcesz zduplikowanych kluczy, po prostu wyszukaj maksimum (tj. Unikaj array_keys), a otrzymasz tylko jeden klucz odpowiadający maksymalnej wartość
Zwraca klucz igły, jeśli zostanie znaleziony w tablicy, FALSE w przeciwnym razie.
Jeśli igła zostanie znaleziona w stogu siana więcej niż raz, zwracany jest pierwszy pasujący klucz . Aby zwrócić klucze dla wszystkich pasujących wartości, użyj zamiast tego parametru array_keys () z opcjonalnym parametrem search_value.
Nie mówiąc o wydajności. Wyszukiwanie przez tablicę, sprawdzanie maksymalnej wartości za każdym razem jest nawet gorsze niż „zła praktyka”.
bisko
1
Wspomniałem, że to nie moja realizacja. To była szybka i brudna kopia / wklej, której OP oczywiście nie mógł zrobić sam, panie.
Timur Asaliev
3
Nie zamierzam kłamać, sprawiłeś, że się zaśmiałem. Martwisz się o max () dla każdej iteracji przez tablicę? To „gorsze niż zła praktyka”. Nie, nie wierzę, że tak jest. Nie jest najbardziej elegancki, ale działa.
reset($arr); echo key($arr);
:)Odpowiedzi:
Moje rozwiązanie to:
Uwaga: w
ten sposób możesz pobrać każdy klucz związany z daną wartością maksymalną .
Jeśli interesuje Cię tylko jeden klucz spośród wszystkich, po prostu użyj $ maxs [0]
źródło
array_keys
), a otrzymasz tylko jeden klucz odpowiadający maksymalnej wartość<?php $array = array(11 => 14, 10 => 9, 12 => 7, 13 => 7, 14 => 4, 15 => 6); echo array_search(max($array), $array); ?>
array_search () zwraca wartości:
Zwraca klucz igły, jeśli zostanie znaleziony w tablicy, FALSE w przeciwnym razie.
Jeśli igła zostanie znaleziona w stogu siana więcej niż raz, zwracany jest pierwszy pasujący klucz . Aby zwrócić klucze dla wszystkich pasujących wartości, użyj zamiast tego parametru array_keys () z opcjonalnym parametrem search_value.
źródło
Wiem, że mam już odpowiedź, ale oto rozwiązanie, które uważam za bardziej eleganckie:
arsort($array); reset($array); echo key($array);
i voila!
źródło
reset
okazji nie jest to konieczne.Inne odpowiedzi mogą mieć krótszy kod, ale ten powinien być najbardziej wydajny i łatwy do zrozumienia.
/** * 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; }
źródło
Coś takiego powinno załatwić sprawę
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; }
źródło
Moje rozwiązanie, aby uzyskać wyższy klucz, jest następujące:
max(array_keys($values['Users']));
źródło
źródło
<?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/>"; ?>
źródło
Funkcja zaczerpnięta z 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)));
Działa jak marzenie
źródło