2014-03-27 73 views
0

我正在尋找解決方案來檢查數組是否存在國家代碼。 而不是發佈全名。Countries Array check for value

我在PHP新的,所以如果in_array是正確的做法:)

PHP代碼

$country = "al" 

<?php if (in_array("$country", $countries_en)) { 
     echo "$country"; } 
    ?> 

我不是舒爾所以回聲我想是不是「人」。我想要「阿爾巴尼亞」。

數組:

$countries_en = array 
(
    'ad' => 'Andorra', 
    'ae' => 'United Arab Emirates', 
    'af' => 'Afghanistan', 
    'ag' => 'Antigua and Barbuda', 
    'ai' => 'Anguilla', 
    'al' => 'Albania', 
    'am' => 'Armenia,..... and much more 

回答

3

只需使用$country爲重點,以讓你從$country_en陣列所需的值:

$country = "al"; 

if (array_key_exists($country, $countries_en)) { 
    echo $country_en[$country]; 
} 

您想在這裏使用array_key_exists(),不in_array() as al是數組鍵之一,而不是數值。

+0

THX :)工作正常 – user1551496

2

嘗試這種情況:

這裏的「人」被用作陣列的鍵,而不是值和in_array()函數檢查值。

所以,你需要在這裏使用另一個函數array_key_exists()

<?php if (array_key_exists($country, $countries_en)) { 
    echo $country_en[$country]; } 
?> 
+0

那麼,是不是這只是一樣[約翰的回答(http://stackoverflow.com/a/22688407/1438393)? :) –

1
As a solution to your problem please try executing following code snippet 
    <?php 
    $country='al'; 
    if(isset($countries_en[$country])) 
    { 
     echo $countries_en[$country]; 
    } 
?> 
1

嘗試array_walk功能:

$country = 'ai'; 

$countries_en = array(
    'ad' => 'Andorra', 
    'ae' => 'United Arab Emirates', 
    'af' => 'Afghanistan', 
    'ag' => 'Antigua and Barbuda', 
    'ai' => 'Anguilla' 
); 

array_walk($countries_en, function($value,$key) use ($country) { 
    if ($country === $key) { 
     echo $value; // result "Anguilla" 
    } 
}); 
+0

另一種方法。但是我覺得'array_walk'過度殺傷了這裏,因爲一個簡單的鍵查找可以解決這個問題。該函數必須遍歷整個數組來執行您在'callback'中定義的任何操作。 –

+0

@AmalMurali是的,它是替代方案,假設OP發現它很有趣,只要他需要操縱整個陣列 – tnanoba

+1

我已經爲您的答案+1了。我更新了你的答案,使用'use'構造(這是訪問回調函數作用域之外的變量的正確方法)。 –