如何在PHP中中断数组?
我想转换此数组…如何在PHP中中断数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想转换此数组… Array ( [0] => Array ( [1] => A1 [2] => A11 [3] => A111 ) [1] => Array ( [4] => A2 [5] => A22 ) [2] => Array ( [6] => A3 [7] => A33
Array
(
[0] => Array
(
[1] => A1
[2] => A11
[3] => A111
)
[1] => Array
(
[4] => A2
[5] => A22
)
[2] => Array
(
[6] => A3
[7] => A33
)
)
作为
有谁能给我指点一下吗?你要找的是“展平”这个词-你想展平这个阵列
php手册的注释中有一些示例代码:
你可以这样做
$flattened = call_user_func_array('array_merge', $your_array);
请注意,这需要数组索引具有数值才能正常工作。但看起来这不是问题。:)不过,它也不会保留原始索引,只会在最后添加新的值
$result = array_reduce($original, 'array_merge', array());
这相当于函数式编程中的。另请参阅上的PHP手册
如果要保留键->值绑定,请使用以下简单函数替换
array\u merge
:
function array_merge_with_keys($a, $b) {
foreach($b as $key => $val) {
$a[$key] = $val;
}
return $a;
}
用这个
$newarray = array();
foreach($array as $subarray) {
foreach ($subarray as $key=>$value) {
$newarray[$key] = $value;
}
}
@安德烈-事实上,当我最初看到它时,它没有。标签中也应该有。可能是重复的我确信我第一次看到它时标题中没有“PHP”,但是帖子的历史记录中没有这个-有没有不是每个人都看到的修订?可能是重复的我也需要他们相应的键。现在它将从子数组中保存键:)。在这种情况下,您可能会错过一些内容,因为$array[0][1]=“A01”和$array[1][1]=“A11”,您将只收到$newarray[1]=“A11”,因为子数组中的键是相等的。嗨,本,谢谢您的回答。我得到了答案,但键值已更改,并生成了新的键。如何在此处使用旧的键值?
function array_merge_with_keys($a, $b) {
foreach($b as $key => $val) {
$a[$key] = $val;
}
return $a;
}
$newarray = array();
foreach($array as $subarray) {
foreach ($subarray as $key=>$value) {
$newarray[$key] = $value;
}
}