2

我有一个数组:

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

它继续...

当我获得一个国家/地区位置时,它会显示为美国,但我需要将该(值)与键匹配,在本例中为“美国”。我该怎么做?当我需要使用值来获取密钥时,我看到的所有示例都与使用密钥获取值有关。理想情况下,输出将只是“US”,而不是数组中的输出。

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

4

4 回答 4

5

您可以使用array_search功能:

$key = array_search("United States", $countryList); // $key = 'US';
于 2012-08-09T15:47:00.233 回答
3

array_search将为您提供映射到所提供值的键。

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

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

$countriesByName = array_flip($countryList);
$countryCode = $countriesByName['United States'];
于 2012-08-09T15:45:33.890 回答
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);
}
?>
于 2012-08-09T15:47:47.643 回答
1

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

于 2012-08-09T15:46:18.383 回答