簡體   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