更好的array_search()

时间:2011-09-01 09:20:19

标签: php arrays

我想按值而不是按键搜索数组。它是country code => country name的数组,如下所示。

$countries = array (
    'AF' => 'Afghanistan',
    'AX' => 'Åland Islands',
    'AL' => 'Albania',
    'DZ' => 'Algeria',
    'AS' => 'American Samoa');

当然,PHP的array_search()是一个完美的候选者,但是我不想返回找到的元素的键,而是返回值。我能想到这样做的唯一方法是使用以下(来自函数):

return $countries[array_search($string, $countries)];

有更好/更快的方法吗?

3 个答案:

答案 0 :(得分:2)

我认为你的速度足够快。就像

$key = array_search($string, $countries);
return $countries[ $key ];

答案 1 :(得分:2)

$countries = array (
    'Afghanistan' => 'AF',
    'Åland Islands' => 'AX',
);
if (isset($countries[$string])){
  return $string;
}
然而,你目前的方式并没有什么不好 如果我是你,我不会偶然发现这样一个小问题

答案 2 :(得分:1)

您可以创建镜像阵列(反向索引)并搜索它。

如果您的原始数组根本没有经常更改,这是可以接受的,因为您将有两个数组保持同步。

我认为,你基本上想要的是,因为你似乎在说如果'阿尔及利亚'是你的搜索词,那么你想要回归'阿尔及利亚'。因此,要么从数组中的值构建集合并对其进行查找,要么,如果您不想要第二个结构,请使用array_search但不要返回数组,或者使用{{ 1}}。