PHP Получить максимальную ценность из массива

Я пытаюсь получить наибольшее значение в массиве, сохраняя при этом метки элементов. Я знаю, что могу это сделать, запустив sort (), но если я это сделаю, я просто потеряю ярлыки, что делает его бессмысленным для того, что мне нужно. Вот массив:

array("a"=>1,"b"=>2,"c"=>4,"d"=>5); 

Есть идеи?

Solutions Collecting From Web of "PHP Получить максимальную ценность из массива"

Не сортируйте массив, чтобы получить наибольшее значение.

Получите максимальное значение:

 $value = max($array); 

Получите соответствующий ключ:

 $key = array_search($value, $array); 

Если вы просто хотите, чтобы наибольшее значение в массиве использовало функцию max . Это вернет наибольшее значение, хотя не соответствующий ключ. Он не меняет исходный массив.

Если вам нужен ключ, который вы могли бы сделать

 $key = array_search(max($array), $array) 

(Отредактировано для включения предложения @ binaryLV)

 $a = array(10, 20, 52, 105, 56, 89, 96); $b = 0; foreach ($a as $key=>$val) { if ($val > $b) { $b = $val; } } echo $b; 

Вы ищете asort ()

Вы можете использовать max () для получения наибольшего значения, но оно вернет только значение без соответствующего индекса массива. Затем вы можете использовать array_search (), чтобы найти соответствующий ключ.

 $array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5); $maxValue = max($array); $maxIndex = array_search(max($array), $array); var_dump($maxValue, $maxIndex); 

Вывод:

 int 5 string 'd' (length=1) 

Если имеется несколько элементов с одинаковым значением, вам придется перебирать массив, чтобы получить все ключи.

Трудно предложить что-то хорошее, не зная проблемы. Зачем тебе это? Что такое ввод, какой желаемый результат?

 // assuming positive numbers $highest_key; $highest_value = 0; foreach ($array as $key => $value) { if ($value > $highest_value) { $highest_key = $key; } } // $highest_key holds the highest value 
 $abc=array("a"=>1,"b"=>2,"c"=>4,"e"=>7,"d"=>5); /*program to find max value*/ $lagest = array(); $i=0; foreach($abc as $key=>$a) { if($i==0) $b=$a; if($b<$a) { $b=$a; $k=$key; } $i++; } $lagest[$k]=$b; print_r($lagest); 
 <?php $array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5); foreach ($array as $key => $value) { if ($value >= $max) $max = $key; } echo " The array in largest number :".$max."<br/>"; ?> 

Вам нужно использовать ksort (array ("a" => 1, "b" => 2, "c" => 4, "d" => 5)); для получения дополнительной информации: http://www.w3schools.com/php/php_arrays_sort.asp

greatValue => попробуйте это очень легко

 $a=array(10,20,52,105,56,89,96); $c=0; foreach($a as $b) { if($b>$c) $c=$b; } echo $c; 

Найти наибольшее число, включая отрицательные:

 return max([abs(max($array)),abs(min($array))]); 
 $ee = array('a' => 50, 'b' => 25, 'c' => 5, 'd' => 80, 'e' => 40, 'f' => 152, 'g' => 45, 'h' => 28); $Acurr = ''; $Amax = 0; foreach($ee as $key => $value) { $Acurr = $value; if($Acurr >= $Amax) { $Amax = $Acurr; } } echo "greatest number is $Amax"; 

asort() – это путь:

 $array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5); asort($array); $highestValue = end($array); $keyForHighestValue = key($array); 

Попробуйте использовать asort() .

Из документации:

asort – сортировать массив и поддерживать ассоциацию индекса

Описание:

 bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 

Эта функция сортирует массив таким образом, что индексы массива сохраняют свою корреляцию с элементами массива, с которыми они связаны. Это используется в основном при сортировке ассоциативных массивов, где фактический порядок элементов значителен.