我有一个数组:
Array
(
[0] => Array
(
[2010] => 2010
)
[1] => Array
(
[2011] => 2011
)
[2] => Array
(
[2012] => 2012
)
[3] => Array
(
[2013] => 2013
)
[4] => Array
(
[2014] => 2014
)
[5] => Array
(
[2015] => 2015
)
[6] => Array
(
[2016] => 2016
)
)
我想把它转换成
array(
[2010] => 2010
[2011] => 2011
[2012] => 2012
)
我写了一个这样的函数:
foreach($arr as $a)
{
foreach($a as $k=>$sub)
{
$newArr[$k] = $sub;
}
}
我做的对吗?
记住array_merge和array + array之间的区别是什么?
在"endresult"数组上使用+=将把给定数组添加到当前数组中。在键重叠的情况下,上面的链接中解释了一些需要注意的注意事项。
$arr = [[2012 => 'foo'],[2014 => 'bar'],[2015=>'baz']];
$new = [];
foreach($arr as $i) {
$new += $i;
}
echo "<PRE>";
var_dump($new);
实时样本:https://ideone.com/olydNq
请试试这个
$array = Array
(
'0' => Array
(
'2010' => 2010,
),
'1' => Array
(
'2011' => 2011,
),
'2' => Array
(
'2012' => 2012,
),
'3' => Array
(
'2013' => 2013,
),
'4' => Array
(
'2014' => 2014,
),
'5' => Array
(
'2015' => 2015,
),
'6' => Array
(
'2016' => 2016,
),
);
$oneDimensionalArray = call_user_func_array('array_merge', $array);
foreach($oneDimensionalArray as $_oneDimensionalArray)
{
$newArr[$_oneDimensionalArray] = $_oneDimensionalArray;
}
print_r($newArr)
请检查此代码,它也适用于未规定的数组结构
<?php
$array = array
(
'aaaaa',
10,
'0' => array
(
'2010' => 2010,
),
'1' => array
(
'2011' => 2011,
),
'2' => array
(
'2012' => 2012,
),
'3' => array
(
'2013' => 2013,
),
'4' => array
(
'2014' => 2014,
),
'5' => array
(
'2015' => 2015,
),
'6' => array
(
'2016' => 2016,
'2017' => 2017,
'xxxx' => 'yyyy',
),
);
$newArr=array();
function walk_first($val, $key)
{
if(is_array($val))
{
array_walk($val, 'walk_second');
}
}
function walk_second($val, $key)
{
global $newArr;
$newArr[$key]=$val;
}
array_walk($array, 'walk_first');
print_r($newArr);
?>