数组值来查找键

时间:2012-08-09 15:44:23

标签: php arrays

我有一个数组:

$countryList = array(
  "GB" => "United Kingdom",
  "US" => "United States",
  "AF" => "Afghanistan",
  "AL" => "Albania",
  "DZ" => "Algeria"
);

它继续......

当我获得一个国家/地区时,它会出现,例如美国,但我需要将该值(值)与密钥相匹配,在本例中为“US”。我该怎么做?我看到的所有示例都与使用密钥获取值时需要使用该值来获取密钥。最佳输出将只是“美国”,而不是阵列中的输出。

我已经尝试了echo array_keys('United States', $countryList);,但它希望第一个参数位于数组中,并且它只是以美国形式出现,如果可能的话,我宁愿不将其更改为数组。

4 个答案:

答案 0 :(得分:5)

您可以使用array_search功能:

$key = array_search("United States", $countryList); // $key = 'US';

答案 1 :(得分:3)

array_search会为您提供映射到提供值的密钥。

$countryCode = array_search('United States', $countryList);

如果您需要多次执行此操作,可以使用array_flip将键与值交换。这将提供更快的查找速度和一次性翻转成本。

$countriesByName = array_flip($countryList);
$countryCode = $countriesByName['United States'];

答案 2 :(得分:3)

<?php
$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
    if ($fruit_name == 'apple') {
        echo key($array).'<br />';
    }
    next($array);
}
?>

答案 3 :(得分:1)

试试这个:array_keys($countryList, "United States");