我有这3个数组:
$a1 = array( 'a' => 1, 'b' => 2, 'c' => 3 );
$a2 = array( 'a' => 4, 'b' => 5, 'd' => 6 );
$a3 = array( 'a' => 7, 'c' => 8, 'd' => 9, 'x' => 10 );
Run Code Online (Sandbox Code Playgroud)
我想合并它们,所以结果如下:
Array(
[a] => Array(
[0] => 1
[1] => 4
[2] => 7
)
[b] => Array(
[0] => 2
[1] => 5
[2] =>
)
[c] => Array(
[0] => 3
[1] =>
[2] => 8
)
[d] => Array(
[0] =>
[1] => 6
[2] => 9
)
[x] => Array(
[0] =>
[1] =>
[2] => 10
)
Run Code Online (Sandbox Code Playgroud)
...我将在这样一个简单的表中使用数据:
col-1 col-2 col-3
a 1 4 7
b 2 5 -
c 3 - 8
d - 6 9
x - - 10
Run Code Online (Sandbox Code Playgroud)
array_merge_recursive很接近,但是没有给我空元素,所以我相信我需要一个循环来完成工作.我的问题是弄清楚我需要在该循环中使用哪个函数.
我很高兴只使用自定义用户功能合并2个数组.
我认为最简单的方法是从所有输入数组中获取所有键的列表,然后迭代键列表以构造结果数组:
$keys = array_unique(
array_merge(
array_keys($a1),
array_keys($a2),
array_keys($a3)
)
);
$result = array();
foreach ($keys as $key) {
$result[$key] = array(
isset($a1[$key]) ? $a1[$key] : null,
isset($a2[$key]) ? $a2[$key] : null,
isset($a3[$key]) ? $a3[$key] : null
);
}
print_r($result);
Run Code Online (Sandbox Code Playgroud)
...或者如果要提供具有任意数量输入数组的数组数组:
$keys = array();
foreach ($arrs as $arr) {
$keys = array_merge($keys, array_keys($arr));
}
$keys = array_unique($keys);
$result = array();
foreach ($keys as $key) {
$result[$key] = array();
foreach ($arrs as $arr) {
$result[$key][] = isset($arr[$key]) ? $arr[$key] : null;
}
}
print_r($result);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |