Utilisation array_search()
:
$key = array_search($value, $array);
Donc, dans votre code:
// returns the key or false if the value hasn't been found.
function get_area_code($text_input) {
global $england;
return array_search($england, $text_input);
}
Si vous voulez insensible à la casse, vous pouvez utiliser cette fonction au lieu de array_search()
:
function array_isearch($haystack, $needle) {
foreach($haystack as $key => $val) {
if(strcasecmp($val, $needle) === 0) {
return $key;
}
}
return false;
}
Si les valeurs du tableau sont des expressions régulières, vous pouvez utiliser cette fonction:
function array_pcresearch($haystack, $needle) {
foreach($haystack as $key => $val) {
if(preg_match($val, $needle)) {
return $key;
}
}
return false;
}
Dans ce cas, vous devez vous assurer que toutes les valeurs de votre tableau sont des expressions régulières valides.
Cependant, si les valeurs proviennent d'un <input type="select">
, il y a une meilleure solution: Au lieu de <option>Cheshire</option>
utilisation <option value="CHS">Cheshire</option>
. Ensuite, le formulaire soumettra la valeur spécifiée au lieu du nom affiché et vous n'aurez pas à faire de recherche dans votre tableau; il vous suffit de vérifier isset($england[$text_input])
pour vous assurer qu'un code valide a bien été envoyé.
+1 @Haroldo être conscient que array_search est sensible à la casse lorsque vous travaillez avec des chaînes. – SubniC
Est-il possible de faire array_seach, où la valeur est une expression régulière? Ensuite, je pourrais utiliser preg_quote et compte pour les abréviations et les différentes versions de et ... – Haroldo
@Thief - excellent conseil sur l'utilisation de l'entrée de sélection, merci! – Haroldo