2013-10-11 3 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

Смежные вопросы