繁体   English   中英

更好的array_search()

[英]Better array_search()

我想按值而不是按键搜索数组。 这是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)];

有没有更好/更快的方法来做到这一点?

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

$key = array_search($string, $countries);
return $countries[ $key ];
$countries = array (
    'Afghanistan' => 'AF',
    'Åland Islands' => 'AX',
);
if (isset($countries[$string])){
  return $string;
}

但是,按照您当前的方式,这还不错。
如果我是你,我不会偶然发现这样一个琐碎的“问题”

您可以创建一个镜像数组(一个反向索引)并进行搜索。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM