2012-05-11 8 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'; 
}