Ответ 1
Не сортируйте массив, чтобы получить наибольшее значение.
Получить максимальное значение:
$value = max($array);
Получить соответствующий ключ:
$key = array_search($value, $array);
Я пытаюсь получить наибольшее значение в массиве, сохраняя при этом метки элементов. Я знаю, что могу это сделать, запустив sort(), но если я это сделаю, я просто потеряю ярлыки, что делает его бессмысленным для того, что мне нужно. Здесь массив:
array("a"=>1,"b"=>2,"c"=>4,"d"=>5);
Любые идеи?
Не сортируйте массив, чтобы получить наибольшее значение.
Получить максимальное значение:
$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 (массив ( "а" = > 1, "б" = > 2, "с" = > 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 ] )
Эта функция сортирует массив таким образом, что индексы массива поддерживают их корреляция с элементами массива, с которыми они связаны. Это используется, главным образом, при сортировке ассоциативных массивов, где фактический элемент порядок значим.