1

我有一个数组如下,

$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 )
4

6 回答 6

3

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

    foreach ($country as $n => $state)
    {
        if (strstr($state, 'USA'))
        {
            //found
            break;
        }
    }
于 2012-05-28T11:20:40.250 回答
3
$str = 'USA';
foreach ($country as $k => $v) {
  if (strpos($v, $str) !== FALSE)
    break;
}

echo $k; // will print: 0
于 2012-05-28T11:25:27.627 回答
1

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

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

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

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

于 2012-05-28T11:17:50.723 回答
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);
}
于 2012-05-28T11:21:53.523 回答
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”......

于 2012-05-28T11:26:26.563 回答
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;
     }
}

但是,我相信每个人都会建议您使用数组中的键。

于 2012-05-28T11:37:23.433 回答