web-dev-qa-db-fra.com

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

En PHP, disons que vous avez un tableau associatif comme celui-ci:

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

Comment pourrais-je trouver la clé avec la valeur la plus basse? Ici, je chercherais cats.

Y a-t-il une fonction intégrée PHP que j'ai manquée qui fait cela? Ce serait également bien s'il y avait une solution qui tenait compte de plusieurs valeurs identiques, comme ci-dessous:

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

Ci-dessus, cela ne me dérangerait pas si cela sortait non plus; cats ou dogs.

Merci d'avance.

41
Philip Morton

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).

90
SilentGhost

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

10
lexx
$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é du tableau d'origine.

2
Jeff Ober

Pourrait essayer de les examiner:

2
Phill Pafford