我想按值而不是按键搜索数组。它是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)];
有更好/更快的方法吗?
答案 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}}。