PHP - 数组搜索获取键值

时间:2012-05-28 11:14:19

标签: php arrays search

我有一个如下数组,

$country = array ("01. USA","02. Russia","03. UK","04. India");

我只想用这个字符串$str = "USA";搜索我的数组,它应该返回值为的键。那可能吗。我尝试使用array_search()并且无效。

更新

实际数组有,

Array ( [0] => 01. Australian Dollar [1] => 06. Swedish Kroner [2] => 02. British Pound Sterling [3] => 07. Swish Frank [4] => 03. Canadian Dollar [5] => 08. U.S. Dollar [6] => 04. Japanese Yen Per 100 [7] => 09. Euro [8] => 05. Singapore Dollar [9] => 10. Taka Per 100 )

6 个答案:

答案 0 :(得分:3)

如果包含strstr(),则可以尝试foreach值测试。

    foreach ($country as $n => $state)
    {
        if (strstr($state, 'USA'))
        {
            //found
            break;
        }
    }

答案 1 :(得分:3)

$str = 'USA';
foreach ($country as $k => $v) {
  if (strpos($v, $str) !== FALSE)
    break;
}

echo $k; // will print: 0

答案 2 :(得分:1)

您未在示例中设置任何键,这意味着键会自动分配0到3之间的值。如果您要搜索“数据”,则数组中不存在值“USA” 01. USA“那么你会得到值0(零),因为它是数组中第一个带有自动分配键的值。

在这个数组上为“USA”做一个array_search,它可能会给你预期的结果:

$country = array (1 => "USA", 2 => "Russia", 3 => "UK", 4 => "India");

您需要使用key => value正确分配键和值。您可以1 => "USA"取代"01" => "USA"而不是{{1}},这将为美国提供关键字“01”。

答案 3 :(得分:1)

您可以使用此处所述的preg-grep preg_grep

然后你应该将preg_grep的结果放入array_search。

$results = preg_grep($pattern, $input);
$indices = array();
foreach ($results as $result) {
   $indices[] = array_search($result, $input);
}

答案 4 :(得分:1)

$search = "USA";
$country = array ("01. USA","02. Russia","03. UK","04. India");
foreach($country as $key=>$cnt){
   if(strpos($cnt,$search)){
      echo "String found in position $key";
      break;
   }
 }

您可以用这种方式编写代码。但它也会返回true如果您的搜索字符串也是“US”....

答案 5 :(得分:0)

如果您希望在没有任何密钥的情况下保持当前结构(这不是最佳解决方案)。这是你可以做的:

$countries = array (
                    "01. USA",
                    "02. Russia",
                    "03. UK",
                    "04. India"
                   );

$input  =  'UK';
$output =  '';
foreach ($countries as $country){
     $found = strpos($country,$input);
     if ($found > 0){  // assuming $country wouldn't start with country name.
         $output = trim(substr($country,0,$found-1));
         break;
     }
}

但是,我相信每个人都会建议你在阵列中使用Keys。