48 votes

Recherche de la clé de la valeur minimale dans un tableau associatif

En PHP, disons que vous avez un tableau associatif comme ceci:

$pets = array(
    "cats" => 1,
    "dogs" => 2,
    "fish" => 3
);

Comment pourrais-je trouver la clé avec la valeur la plus basse? Ici, je serais à la recherche d' cats.

Est-il construit en fonction PHP que j'ai raté qui fait cela? Il serait également très bien si il y avait une solution à l'origine de plusieurs valeurs identiques, comme ci-dessous:

$pets = array(
    "cats" => 1,
    "dogs" => 1,
    "fish" => 2
);

Ci-dessus, je ne me dérangerait pas si c'était seulement une sortie; cats ou dogs.

Merci à l'avance.

109voto

SilentGhost Points 79627

array_keys est votre ami:

 $pets = array(
    "cats" => 1,
    "dogs" => 2,
    "fish" => 3
);
array_keys($pets, min($pets));  # array('cats')
 

PS : il y a un dup ici quelque part sur SO (il y avait max au lieu de min , mais je m'en souviens très bien).

13voto

lexx Points 21

Voilà comment je l'ai fait.

 $pets = array(
    "cats" => 1,
    "dogs" => 2,
    "fish" => 3
);

array_search(min($pets), $pets); 
 

J'espère que ça aide

3voto

Phill Pafford Points 32046

Pourrait essayer de les examiner:

2voto

Jeff Ober Points 3314
 $min_val = null;
$min_key = null;
foreach($pets as $pet => $val) {
  if ($val < $min_val) {
    $min_val = $min;
    $min_key = $key;
  }
}
 

Vous pouvez également retourner le tableau et le trier par clé:

 $flipped = array_flip($pets);
ksort($flipped);
 

Ensuite, la première clé est le minimum, et sa valeur est la clé dans le tableau d'origine.

-3voto

trouver la valeur la plus élevée

 print max(120, 7, 8, 50);
 

retours -> 120

 $array = array(100, 7, 8, 50, 155, 78);
print max($array);
 

retours -> 155

trouver la valeur la plus basse

 print min(120, 7, 8, 50);
 

renvoie -> 7

 $array = array(50, 7, 8, 101, 5, 78);
print min($array);
 

renvoie -> 5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X