我想转换这个数组......
Array
(
[0] => Array
(
[1] => A1
[2] => A11
[3] => A111
)
[1] => Array
(
[4] => A2
[5] => A22
)
[2] => Array
(
[6] => A3
[7] => A33
)
)
作为
Array
(
[0] => A1
[1] => A11
[2] => A111
[3] => A2
[4] => A22
[5] => A3
[6] => A33
)
任何人都可以指导我吗?
答案 0 :(得分:4)
“Flatten”是您正在寻找的单词 - 您想要展平此数组。
php手册的评论中有一些示例代码:
http://php.net/manual/en/function.array-values.php
/**
* Flattens an array, or returns FALSE on fail.
*/
function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$result = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$result = array_merge($result, array_flatten($value));
}
else {
$result[$key] = $value;
}
}
return $result;
}
答案 1 :(得分:1)
您可以执行类似
的操作$flattened = call_user_func_array('array_merge', $your_array);
请注意,这要求您的数组索引具有数值才能正常工作。但看起来这不是问题。 :)尽管如此,它也不会保留原始索引 - 它只会在最后处理新值。
答案 2 :(得分:1)
$result = array_reduce($original, 'array_merge', array());
这相当于函数式编程中的fold。另请参阅array_reduce上的PHP手册。
如果您想保留 key-> value 绑定,请使用以下简单函数替换array_merge
:
function array_merge_with_keys($a, $b) {
foreach($b as $key => $val) {
$a[$key] = $val;
}
return $a;
}
答案 3 :(得分:1)
使用此
$newarray = array();
foreach($array as $subarray) {
foreach ($subarray as $key=>$value) {
$newarray[$key] = $value;
}
}