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

ここで説明されているように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;
   }
 }

このようにコードを書くことができます。ただし、検索文字列が「US」の場合も true が返されます....

于 2012-05-28T11:26:26.563 に答える
1

この例ではキーを設定していません。これは、キーに 0 から 3 の値が自動的に割り当てられることを意味します。また、「01.USA」を検索すると、値「USA」は配列に存在しません。 " すると、値 0 (ゼロ) が得られます。これは、自動的に割り当てられたキーを持つ配列内の最初の値であるためです。

この配列で "USA" の array_search を実行すると、期待どおりの結果が得られる可能性があります。

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

key => valueキーと値を適切に割り当てるために使用する必要があります。代わりに、米国にキー「01」を与える1 => "USA"こともできます。"01" => "USA"

于 2012-05-28T11:17:50.723 に答える
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 に答える