展平数组使第一项成为关键

时间:2014-08-12 13:55:35

标签: php arrays flatten

有没有办法压扁这个数组:

Array ( 
    [0] => Array ( 
        [country_code] => IM 
        [language_code] => GB 
    ) 
    [1] => Array ( 
        [country_code] => GG 
        [language_code] => JE 
    ) 
    [2] => Array ( 
        [country_code] => US 
        [language_code] => US 
    ) 
) 

到此:

array (
    "IM" => "GB"
    "GG" => "JE"
    "US" => "US"
) 

我需要将每个项中的第一项作为键,将第二项作为值。

更新

是否可以使用secon概念获得多个值。如果我有这个数组:

Array ( [0] => Array ( [country_code_two] => GBR [country_code_three] => GB [language_code] => EN ) ) 

并想要创建以下内容:

array (
    [GBR] => array ([0] => "GB", [1] => "EN")   
)

这怎么可能?我目前正在使用你的第二个选项,因为我没有5.5

1 个答案:

答案 0 :(得分:3)

如果您使用的是PHP 5.5,则可以执行以下操作:(Docs

$result = array_column($source, "language_code", "country_code");

如果您没有使用PHP 5.5,那么您应该:p

更严重的是,向后兼容的版本:

$keys = array_map(function($a) {return $a['country_code'];},$source);
$vals = array_map(function($a) {return $a['language_code'];},$source);
$result = array_combine($keys,$vals);

如果你以某种方式坚持使用真正的旧版本的PHP,那么"传统":

$result = array();
foreach($source as $a) {
    $result[$a['country_code']] = $a['language_code'];
}