PHP从Array获得最高价值

时间:2011-07-13 09:24:24

标签: php arrays sorting

我正在尝试获取数组中的最大值,同时仍保留项目标签。我知道我可以通过运行sort()来做到这一点,但是如果我这样做,我就会丢失标签 - 这使得它对我需要的东西毫无意义。这是阵列:

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

有什么想法吗?

15 个答案:

答案 0 :(得分:124)

不要对数组进行排序以获得最大值。

获取最大值:

$value = max($array);

获取相应的密钥:

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

答案 1 :(得分:17)

如果您只想要数组中的最大值,请使用max函数。这将返回最大值,但不是相应的键。它不会改变原始数组。

如果你关心你可以做的钥匙

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

(编辑包含@ binaryLV的建议)

答案 2 :(得分:3)

您正在寻找asort()

答案 3 :(得分:3)

您可以使用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)

如果有多个元素具有相同的值,则必须循环遍历数组以获取所有键。

在不知道问题的情况下很难提出好的建议。你为什么需要它?什么是输入,什么是所需的输出?

答案 4 :(得分:1)

尝试一下。

$data = array("a"=>1,"b"=>2,"c"=>4,"d"=>5); $maxKey = current(array_keys($data, max($data))); var_dump($maxKey);

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

你需要使用 ksort(阵列( “A”=大于1中, “b”=大于2, “C”=→4, “d”=→5)); 了解更多信息:http://www.w3schools.com/php/php_arrays_sort.asp

答案 9 :(得分:0)

<强> greatestValue =&GT;试试这很简单

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

}
echo $c;

答案 10 :(得分:0)

查找最高数字,包括否定数字:

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

答案 11 :(得分:0)

TO_DATE

答案 12 :(得分:0)

这是练习中的解决方案:

function high($sentence)
{
    $alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
    $alphabet = array_flip($alphabet);

    $words = explode(" ", $sentence);

    foreach ($words as $word) {
        $letters = str_split($word);
        $points = 0;
        foreach ($letters as $letter)
            $points += $alphabet[$letter];
        $score[$word] = $points;
    }

    $value = max($score);
    $key = array_search($value, $score);

    return $key;
}

echo high("what time are we climbing up the volcano");

答案 13 :(得分:-1)

asort()是要走的路:

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

答案 14 :(得分:-2)

尝试使用asort()

来自文档:

  

asort - 对数组进行排序并维护索引关联

     

说明

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

此函数对数组进行排序,使数组索引保持其状态   与它们相关的数组元素的相关性。这是   主要用于排序实际元素所在的关联数组   订单很重要。