Подтвердить что ты не робот

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

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

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

Любые идеи?

4b9b3361

Ответ 1

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

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

$value = max($array);

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

Вы ищете asort()

Ответ 5

Вы можете использовать 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)

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

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

Ответ 6

// 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

Ответ 7

$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);

Ответ 8

<?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/>";
?> 

Ответ 10

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

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

}
echo $c;

Ответ 11

Найти наибольшее число, в том числе отрицательное:

return max([abs(max($array)),abs(min($array))]);

Ответ 12

$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";

Ответ 13

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

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

Ответ 14

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

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

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

Описание:

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

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