2011-07-13 92 views
35

我試圖獲得數組中最大的值,同時仍保留項目標籤。我知道我可以通過運行sort()來做到這一點,但如果我這樣做,我只是失去了標籤 - 這對我所需要的沒有任何意義。這裏的陣列:PHP從數組中獲得最高價值

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

任何想法?

回答

106

數組不排序,以獲得最大的價值。

獲取最大價值:

$value = max($array); 

獲取相應的鍵:

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

謝謝。有效。 –

3

您正在尋找asort()

+1

如果你不」 t需要整個數組排序,使用其中一個gazillion其他答案obvio )但提到sort()讓我覺得你說錯了你的問題。 – Jacob

-4

嘗試使用asort()

從文檔:

ASORT - 按陣列並保持索引關聯

描述:

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

此函數對一個數組,使得數組的索引保持與他們的 相關與它們相關聯的數組元素。在排序關聯數組時,主要用於 ,其中實際元素 的順序很重要。

+0

你在提議什麼不同? – Lomse

-2

asort()是要走的路:

$array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5); 
asort($array); 
$highestValue  = end($array); 
$keyForHighestValue = key($array); 
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 
14

如果你只是想在數組中的最大值使用max功能。這將返回最大值,但不是相應的鍵。它不會更改原始數組。

如果你關心的重點,你可以再做

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

(編輯,包括@ binaryLV的建議)

+0

['array_search()'](http://www.php.net/array_search)可用於查找密鑰。 – binaryLV

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) 

如果存在具有相同值的多個元素,你必須遍歷數組把所有的鑰匙。

很難在不知道問題的情況下提出好的建議。你爲什麼需要它?什麼是輸入,什麼是期望的輸出?

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

greatestValue =>試試這個它很容易

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

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

發現數量最多,包括負面:

return max([abs(max($array)),abs(min($array))]); 
-1
$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";