2011-07-13 11 views
35

Estoy tratando de obtener el mayor valor de una matriz, conservando las etiquetas de los elementos. Sé que puedo hacer esto ejecutando sort(), pero si lo hago simplemente pierdo las etiquetas, lo que hace que no tenga sentido lo que necesito. Aquí está la matriz:PHP Obtenga el valor más alto de la matriz

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

¿Alguna idea?

Respuesta

106

No ordenar la matriz para obtener el valor más grande.

Obtener el valor máximo:

$value = max($array); 

obtener la clave correspondiente:

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

gracias. funcionó. –

3

Usted está buscando asort()

+1

Si no' Necesito ordenar toda la matriz, usar una de las muchas otras respuestas obvio usly;) Pero mencionar sort() me hizo pensar que hablaste mal tu pregunta. – Jacob

-4

Trate de usar asort().

De documentación:

asort - asociación Ordena una matriz y mantener índice

Descripción:

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

Esta función ordena una matriz de tal manera que los índices de matriz mantengan su correlación con el elementos de matriz a los que están asociados. Esto es utilizado principalmente al ordenar matrices asociativas donde el orden real del elemento es significativo.

+0

¿Qué es lo que propones? – Lomse

-2

asort() es el camino a seguir:

$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

Si lo que desea es el valor más grande de la matriz utilizar la función max. Esto devolverá el valor más grande, aunque no la clave correspondiente. No cambia la matriz original.

Si se preocupan por la continuación la tecla que podría hacer

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

(Editado para incluir la sugerencia de @ binaryLV)

+0

['array_search()'] (http://www.php.net/array_search) se puede utilizar para encontrar la clave. – binaryLV

3

Usted podría utilizar max() para conseguir el valor más grande, pero va a devolver sólo un valor sin un índice de acuerdo de formación. Luego, puede usar array_search() para encontrar la clave correspondiente.

$array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5); 
$maxValue = max($array); 
$maxIndex = array_search(max($array), $array); 
var_dump($maxValue, $maxIndex); 

Salida:

int 5 
string 'd' (length=1) 

Si hay varios elementos con el mismo valor, que tendrá que recorrer matriz para obtener todas las claves.

Es difícil sugerir algo bueno sin conocer el problema. ¿Por qué lo necesitas? ¿Cuál es la entrada, cuál es la salida deseada?

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 => Probar que es muy fácil

$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

encontrar el número más alto, incluyendo negativo:

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