简单地说我需要帮助,如何在不更改密钥数组的情况下将多维数组放入一个数组中?
从这些:
Array
(
[0] => Array
(
[554] => a
)
[1] => Array
(
[561] => b
)
[2] => Array
(
[574] => c
)
)
进入这些:
Array
(
[554] => a
[561] => b
[574] => c
)
答案 0 :(得分:0)
我喜欢使用array_walk_recursive
来解决这个问题:
function flatten($array)
{
$temp=array();
array_walk_recursive($array, function($item, $key) use (&$temp) {
$temp[$key]=$item;
});
return $temp;
}
$a = array(
array(
564=>'a',
),
array(
561=>'b',
array(
562=>'d',
array(
563=>'e',
),
),
),
array(
574=>'c',
),
);
$b = flatten($a);
print_r($b);
这是我的输出:
Array
(
[564] => a
[561] => b
[562] => d
[563] => e
[574] => c
)
答案 1 :(得分:0)
我只需要发布这个,因为所有其他当前的答案都非常复杂:
$result = array_reduce($array, function ($result, $array) { return $result + $array; }, array());
这就是所需要的一切。
答案 2 :(得分:0)
我希望我可以帮助你,首先并且不要误解,你需要进一步调查,在寻求解决方案之前,我强烈建议你去www.php.net,{{3并且搜索数组文档,足够说你正在寻找循环数组的方法,实际上你正在寻找" foreach"声明,在这里我做了一个简单的解决方案,你可以在以后转换成函数:
<?php
$original = array
(
0 => array(554 => 'a'),
1 => array(561 => 'b'),
2 => array(574 => 'c'),
);
/*$result = Array
(
[554] => a
[561] => b
[574] => c
);*/
$result = array();
foreach ($original as $sub_array) {
//this help us read first level array
foreach ($sub_array as $subArrayKey=>$subArray) {
// this help us read second level array
$result[$subArrayKey] = $subArray;
}
}
echo '<pre>';
print_r($result);
echo '</pre>';
?>
答案 3 :(得分:-1)
这应该适合你:
$array = array(
array(554 => "a"),
array(561 => "b"),
array(574 => "c")
);
function getL2Keys($array) {
foreach($array as $sub)
$result[] = array_keys($sub);
return call_user_func_array('array_merge', array_values($result));
}
$array = array_combine(getL2Keys($array), call_user_func_array('array_merge', array_values($array)));
print_r($array);
输出:
Array
(
[554] => a
[561] => b
[574] => c
)