简体   繁体   English

PHP 从数组中获取最大值

[英]PHP Get Highest Value from Array

I'm trying to get hold of the largest value in an array, while still preserving the item labels.我正在尝试获取数组中的最大值,同时仍保留项目标签。 I know I can do this by running sort(), but if I do so I simply lose the labels - which makes it pointless for what I need.我知道我可以通过运行 sort() 来做到这一点,但如果我这样做,我只会丢失标签——这对我需要的东西来说毫无意义。 Here's the array:这是数组:

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

Any ideas?有任何想法吗?

Don't sort the array to get the largest value.不要对数组进行排序以获得最大值。

Get the max value:获取最大值:

$value = max($array);

Get the corresponding key:获取对应的key:

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

If you just want the largest value in the array use the max function.如果您只想要数组中的最大值,请使用最大值function。 This will return the largest value, although not the corresponding key.这将返回最大值,尽管不是相应的键。 It does not change the original array.它不会更改原始数组。

If you care about the the key you could then do如果你关心你可以做的钥匙

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

(Edited to include @binaryLV's suggestion) (编辑包括@binaryLV 的建议)

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

You are looking for asort()您正在寻找asort()

You could use max() for getting the largest value, but it will return just a value without an according index of array.您可以使用max()来获取最大值,但它只会返回一个没有相应数组索引的值。 Then, you could use array_search() to find the according key.然后,您可以使用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);

Output: Output:

int 5
string 'd' (length=1)

If there are multiple elements with the same value, you'll have to loop through array to get all the keys.如果有多个元素具有相同的值,则必须遍历数组以获取所有键。

It's difficult to suggest something good without knowing the problem.在不知道问题的情况下很难提出好的建议。 Why do you need it?你为什么需要它? What is the input, what is the desired output?输入是什么,想要的 output 是什么?

Try it.试试看。

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

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

You need to use by ksort(array("a"=>1,"b"=>2,"c"=>4,"d"=>5));您需要使用 ksort(array("a"=>1,"b"=>2,"c"=>4,"d"=>5)); for more info: http://www.w3schools.com/php/php_arrays_sort.asp欲了解更多信息: http://www.w3schools.com/php/php_arrays_sort.asp

greatestValue=> try this its very easy最大价值=> 试试这个很容易

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

}
echo $c;

Find highest number, including negative:查找最高数,包括负数:

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

Here a solution inside an exercise:这是练习中的一个解决方案:

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

asort() is the way to go: asort()是 go 的方式:

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

Find largest number without using built-in functions in PHP在 PHP 中不使用内置函数查找最大数

<?php
    $array = array(1,2,3);
    $flag = 0;
    foreach($array as $key=>$val){
        if($val > $flag){
           $flag = $val;
        }
        echo "Max value with each iteration: ".$flag."<br/>";
    }
    echo "Final max value: ".$flag;
    ?>

Try using asort() .尝试使用asort()

From documentation:从文档:

asort - Sort an array and maintain index association asort - 对数组进行排序并保持索引关联

Description:描述:

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

This function sorts an array such that array indices maintain their correlation with the array elements they are associated with.此 function 对数组进行排序,以使数组索引保持与它们关联的数组元素的相关性。 This is used mainly when sorting associative arrays where the actual element order is significant.这主要用于对实际元素顺序很重要的关联 arrays 进行排序时使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM