2013-11-01 1 views
0

약간의 언어 변수를 변경하기 위해 지오 코딩을 결합하려고합니다.if (in_array)가 올바르게 실행되지 않습니다.

완벽하게 작동하지만 배열 검사가 작동하지 않는 것처럼 보입니다. 국가 목록에서 확인해야합니다. 내가 국가를 에코한다면 올바른 이름을 얻고 그 부분이 작동한다는 것을 알게됩니다.

//Get User Country 

$country_arr = array(
    "Canada" => "ca", 
    "United States" => "us", 
    "United Kingdom" => "uk", 
    "Australia" => "au", 
    "South Africa" => "za", 
    "Unknow" => "shot" 
); 

$country=visitor_country(); 

if (in_array($country, $country_arr)) { 
    //include ("languages/" . $lang . ".php"); 
    //echo $country_arr[$country]; 
    echo "yes 
"; 
} else { 
    //include ("languages/en.php"); 
    echo "no 
"; 
} 

echo $country; 

은하지 키 값을 확인 모든 관련 코드 작업 및 식용

http://sandbox.onlinephpfunctions.com/code/714d5105012f28cada695a6f11dc61516722e6d7는 또한 와 in_array으로 표준 1 개 차원 배열

$count_array = array("South Africa", "Unknow"); 
+0

나는 바늘로 배열을 사용할 수 있는지 모르거나 array_intersect를 사용하고 싶습니까? –

+0

'var_dump ($ country)'가 보여주는 것은 키가 아닌 값을 검색하고 있습니까? –

+0

$ 국가가 비어있을 수도 있습니다 –

답변

1

를 사용하여 배열 array_key_exists을 장소에 in_array

//Get User Country 

$country = visitor_country(); 

$country_arr = array(
"Canada" => "ca", 
"United States" => "us", 
"United Kingdom" => "uk", 
"Australia" => "au", 
"South Africa" => "za", 
"Unknown" => "shot" 
); 


//$count_array = array("South Africa", "Unknown"); 

if (array_key_exists($country, $country_arr)) { 
//include ("languages/" . $lang . ".php"); 
//echo $country_arr[$country]; 
echo "yes<br>"; 
} else { 
    //include ("languages/en.php"); 
    echo "no<br>"; 
} 

echo $country; 

의와 in_array 함수의 경우 : 그냥 대신 countryNamecountryCode을 사용하고 코드가 작동합니다때문에 $count_array = array("South Africa", "Unknow");이 작동하지 않습니다.은 Unknown을 반환하고 값과 일치하지 않는 Unknow을 가지고 있습니다.

+0

감사합니다. – RemeJuan

1

작동하지와 기능 샌드 박스 되세요.

$country_arr = array("Canada", "United States", "United Kingdom"); 
: - 키없이 - 그 PHP도 '일반'배열에 유의하십시오 BTW

//Get User Country 

$country_arr = array(
    "Canada" => "ca", 
    "United States" => "us", 
    "United Kingdom" => "uk", 
    "Australia" => "au", 
    "South Africa" => "za", 
    "Unknow" => "shot" 
); 

$country = 'Canada'; 

if (isset($country_arr[$country])) 
{ 
    echo "yes"; 
} 
else 
{ 
    echo "no"; 
} 

echo "\n$country"; 

이 작동하는와 in_array 을 위해 당신이해야 할 것입니다 그래서 암시 키가

무엇보다도 국가는 키가 있지만 (암시 적이므로) 국가는 여기에 가치가 있습니다. 원래 코드 국가에는 키가 있습니다.

0

당신은 오타가 - 또한, 당신은 in_array()으로 키에 대한 검색하지 않는, Unknow/Unknown을, 당신은 당신의 GeoIP가 서비스 countryNamecountryCode 필드를 반환 array_key_exists() 또는 array_flip($country_arr)

-1

사용해야합니다. 당신의 $country_arr 배열이

/* For IN Array */ 
$country_arr = array(
    "Canada", 
    "United States", 
    "United Kingdom", 
    "Australia", 
    "South Africa", 
    "Unknown" 
); 

처럼해야

if($ip_data && $ip_data->geoplugin_countryCode != null) 
    { 
     $result = $ip_data->geoplugin_countryCode; 
    } 
관련 문제