2013-10-11 26 views
-3

我有此數組:獲取數據

$country_list = 
array(
"AF" => "Afghanistan", 
"AL" => "Albania", 
"DZ" => "Algeria", 
"AS" => "American Samoa", 
"AD" => "Andorra", 
"AO" => "Angola", 
"AI" => "Anguilla", 
"AQ" => "Antarctica", 
"AG" => "Antigua and Barbuda", 
    .......... 

現在我已經從數據庫中獲得的關鍵,但不知道有多少這樣的:

 $key='AL,AO,AG'; 

 $key='AG,AD,AS,AQ,AF'; 

我想添加從第一個數組陣列的鍵和值,使新陣列如下所示:

$key = 
array(
"AL" => "Albania", 
"AO" => "Angola", 
"AG" => "Antigua and Barbuda"); 

我該怎麼辦?

+1

array_flip的組合(爆炸( '',$鍵))和[array_intersect_key()](http://php.net/manual/en/function.array-intersect-key .php)應該做的工作....但你有沒有考慮過正常化你的數據庫? –

回答

2

擴大對馬克·貝克的評論here

$key='AL,AO,AG'; 
$mykeys = array_flip(explode(',',$key)); 
$result = array_intersect_key($country_list, $mykeys); 
print_r($result); 

輸出:

Array 
(
    [AL] => Albania 
    [AO] => Angola 
    [AG] => Antigua and Barbuda 
) 

Demo!

+0

@Nader:對不起,我不明白你的問題。你能解釋一下嗎? –

1
$country_list = array(
    "AF" => "Afghanistan", 
    "AL" => "Albania", 
    "DZ" => "Algeria", 
    "AS" => "American Samoa", 
    "AD" => "Andorra", 
    "AO" => "Angola", 
    "AI" => "Anguilla", 
    "AQ" => "Antarctica", 
    "AG" => "Antigua and Barbuda", 
    ... 
); 

$key='AL,AO,AG'; 

$subList = array_intersect_key(
    $country_list, 
    array_flip(explode(',',$key)) 
); 
var_dump($subList); 
0
$key='AL,AO,AG'; 
$key = explode(',',$key); 
$key_array = array(); 
foreach($key as $k) 
if (array_key_exists($k, $country_list)) 
    $key_array[$k] = $country_list[$k]; 
0

你可以在數據庫中保存名及密碼你的表應該是這樣的

-------------- 
|code | name | 
-------------- 
|AL | albania | 
-------------- 
|AO | Angola | 
-------------- 
|AG | Antigiua and Barbuda | 

然後當你的代碼像

$codes = 'AL,AO' 
$codes2array = explode(',', $codes); 

運行該SQL

SELECT code, name FROM tbl_name WHERE code IN ("'.implode('","', $codes2array).'"); 

那麼它很容易不與陣列玩選擇名稱

希望你找到我的解決方案有用

享受:d