如何使用php将数组项映射到内部数组?

时间:2018-12-17 13:04:02

标签: php arrays multidimensional-array

我有一个需要重做的数组(最好是PHP的内置函数):

[
   0 => ['ax' => 'Aland Islands'],
   1 => ['as' => 'American Samoa'],
   2 => ['am' => 'Armenia']
];

需要重新制作:

[
    'ax' => 'Aland Islands'
    'as' => 'American Samoa'
    'am' => 'Armenia'
];

2 个答案:

答案 0 :(得分:0)

您可以选择内部数组,然后使用array_merge()创建具有目标结构的新数组。

$arr = [
    0 => ['ax' => 'Aland Islands'],
    1 => ['as' => 'American Samoa'],
    2 => ['am' => 'Armenia']
];
$newArr = array_merge($arr[0], $arr[1], $arr[2]);

如果数组包含许多内部数组,请使用

$newArr = array_merge(...$arr);

您还可以迭代数组并将内部数组插入新变量。

foreach ($arr as $item){
    $key = array_keys($item)[0];
    @$newArr[$key] = $item[$key];
}

demo中查看结果

答案 1 :(得分:0)

使用array_reduce()

$array = [
    0 => ['ax' => 'Aland Islands'],
    1 => ['as' => 'American Samoa'],
    2 => ['am' => 'Armenia']
 ];

print_r(
    array_reduce($array, 
                    function ($c, $i) {
                        return array_merge($c, $i);
                    },
                    []
                )
       );

输出:

  

数组
  (
  [ax] =>奥兰群岛
  [as] =>美属萨摩亚
  [am] =>亚美尼亚
  )

一个非常有用的功能,远远超出了求和/积的累加!