2012-05-11 24 views
1

次の多次元配列で 'uk'という文字列を検索するにはどうすればよいですか?PHPで多次元配列を検索

array(43) 
{ 
    [0]=> array(1) { ["country"]=> string(9) "Australia" } 
    [1]=> array(1) { ["country"]=> string(7) "Bahrain" } 
    [2]=> array(1) { ["country"]=> string(7) "Belgium" } 
    [3]=> array(1) { ["country"]=> string(8) "Bulgaria" } 
    [4]=> array(1) { ["country"]=> string(6) "Canada" } 
    [5]=> array(1) { ["country"]=> string(7) "Croatia" } 
    [6]=> array(1) { ["country"]=> string(6) "Cyprus" } 
    [7]=> array(1) { ["country"]=> string(14) "Czech Republic" } 
    [8]=> array(1) { ["country"]=> string(7) "Denmark" } 
    [9]=> array(1) { ["country"]=> string(7) "Finland" } 
    [10]=> array(1) { ["country"]=> string(7) "Germany" } 
    [11]=> array(1) { ["country"]=> string(6) "Greece" } 
    [12]=> array(1) { ["country"]=> string(9) "Hong Kong" } 
    [13]=> array(1) { ["country"]=> string(7) "Hungary" } 
    [14]=> array(1) { ["country"]=> string(7) "Iceland" } 
    [15]=> array(1) { ["country"]=> string(5) "India" } 
    [16]=> array(1) { ["country"]=> string(4) "Iran" } 
    [17]=> array(1) { ["country"]=> string(6) "Israel" } 
    [18]=> array(1) { ["country"]=> string(5) "Italy" } 
    [19]=> array(1) { ["country"]=> string(5) "Japan" } 
    [20]=> array(1) { ["country"]=> string(5) "Korea" } 
    [21]=> array(1) { ["country"]=> string(6) "Kuwait" } 
    [22]=> array(1) { ["country"]=> string(5) "Malta" } 
    [23]=> array(1) { ["country"]=> string(8) "Mongolia" } 
    [24]=> array(1) { ["country"]=> string(11) "Netherlands" } 
    [25]=> array(1) { ["country"]=> string(6) "Norway" } 
    [26]=> array(1) { ["country"]=> string(8) "Pakistan" } 
    [27]=> array(1) { ["country"]=> string(6) "Poland" } 
    [28]=> array(1) { ["country"]=> string(7) "Romania" } 
    [29]=> array(1) { ["country"]=> string(6) "Russia" } 
    [30]=> array(1) { ["country"]=> string(9) "Singapore" } 
    [31]=> array(1) { ["country"]=> string(8) "Slovakia" } 
    [32]=> array(1) { ["country"]=> string(12) "South Africa" } 
    [33]=> array(1) { ["country"]=> string(13) "South America" } 
    [34]=> array(1) { ["country"]=> string(5) "Spain" } 
    [35]=> array(1) { ["country"]=> string(6) "Sweden" } 
    [36]=> array(1) { ["country"]=> string(11) "Switzerland" } 
    [37]=> array(1) { ["country"]=> string(6) "Taiwan" } 
    [38]=> array(1) { ["country"]=> string(10) "Tajikistan" } 
    [39]=> array(1) { ["country"]=> string(2) "UK" } 
    [40]=> array(1) { ["country"]=> string(20) "United Arab Emirates" } 
    [41]=> array(1) { ["country"]=> string(24) "United States of America" } 
    [42]=> array(1) { ["country"]=> string(7) "Vietnam" } 
} 
+0

を使用すると、コードのフォーマットを改善してくださいできforeachループ – thescientist

+1

を使用しています。 – VisioN

答えて

3

1)単純な文字列をすべて新しい配列にカプセル化するのはなぜですか?実際には理由がある場合

1A):

function my_search($needle, $haystack) 
{ 
    foreach($haystack as $k => $v) 
    { 
     if ($v["country"] == $needle) 
      return $k; 
    } 
    return FALSE; 
} 

$key = my_search("uk", $yourArray); 
if($key !== FALSE) 
{ 
    ... 
} else { 
    echo "Not Found."; 
} 

この関数は論理値FALSEを返すことがありますが、またFALSEと評価さ 非ブール値を返すことがあります。詳細については、 ブール値に関するセクションを参照してください。この機能の戻り値 をテストする場合は=== operatorを使用してください。

1b)が存在しない場合:

2)の値として単純な文字列を使用して、配列を修正し、ない配列(1)の文字列

3)それが固定されます場合は、あなたができるの単純に使用するarray_search()

編集:引数をarray_searchに似ています。

0

あなたは(PHP 5> = 5.5.0)を使用している場合は、より良いと簡単な方法があります:

if(array_search('UK', array_column($array, 'country')) !== false){ 
    echo 'found'; 
}else{ 
    echo 'Not found'; 
}