J'essaie de mettre la main sur la plus grande valeur d'un tableau tout en préservant les étiquettes des éléments. Je sais que je peux le faire en exécutant sort (), mais si je le fais, je perds simplement les étiquettes - ce qui le rend inutile pour ce dont j'ai besoin. Voici le tableau:
array("a"=>1,"b"=>2,"c"=>4,"d"=>5);
Des idées?
Ne triez pas le tableau pour obtenir la plus grande valeur.
Obtenir la valeur maximale:
$value = max($array);
Obtenez la clé correspondante:
$key = array_search($value, $array);
Si vous voulez juste la plus grande valeur du tableau, utilisez la fonction max . Cela retournera la plus grande valeur, mais pas la clé correspondante. Cela ne change pas le tableau d'origine.
Si vous vous souciez de la clé que vous pourriez alors faire
$key = array_search(max($array), $array)
(Edité pour inclure la suggestion de @ binaryLV)
$a = array(10, 20, 52, 105, 56, 89, 96);
$b = 0;
foreach ($a as $key=>$val) {
if ($val > $b) {
$b = $val;
}
}
echo $b;
Vous recherchez asort ()
Vous pouvez utiliser max () pour obtenir la valeur la plus grande, mais il ne renverra qu'une valeur sans index correspondant de tableau. Ensuite, vous pouvez utiliser array_search () pour trouver la clé correspondante.
$array = array("a"=>1,"b"=>2,"c"=>4,"d"=>5);
$maxValue = max($array);
$maxIndex = array_search(max($array), $array);
var_dump($maxValue, $maxIndex);
Sortie:
int 5
string 'd' (length=1)
Si plusieurs éléments ont la même valeur, vous devrez parcourir tableau pour obtenir toutes les clés.
Il est difficile de suggérer quelque chose de bien sans connaître le problème. Pourquoi en avez-vous besoin? Quelle est l'entrée, quelle est la sortie souhaitée?
// 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
greatestValue => essayez c'est très facile
$a=array(10,20,52,105,56,89,96);
$c=0;
foreach($a as $b)
{
if($b>$c)
$c=$b;
}
echo $c;
$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";
Voici une solution à l'intérieur d'un exercice:
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");
<?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/>";
?>
Trouver le nombre le plus élevé, y compris le négatif:
return max([abs(max($array)),abs(min($array))]);
$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);
Vous devez utiliser Ksort (array ("a" => 1, "b" => 2, "c" => 4, "d" => 5)); Pour plus d’informations: http://www.w3schools.com/php/php_arrays_sort.asp