我有一个如下数组,
$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 )
答案 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。