php 中合并两个关联数组的问题
Problems in merging two associative arrays in php
我在 PHP.I 中有两个数组,在合并这两个数组时遇到困难
$scheduleArray0=Array ([04/04/2016] =>
Array ( [TypeName_1] => Weekly
[TypeID_1] => 3)
[04/05/2016] =>
Array ( [TypeName_1] => Weekly
[TypeID_1] => 3 )
)
$scheduleArray1 = Array ( [04/04/2016] =>
Array ( [TypeName_2] => Biweekly
[TypeID_2] => 7 )
[04/05/2016] =>
Array ( [TypeName_2] => Biweekly
[TypeID_2] => 7 ) ) .
我需要它像 this.ie 我的 需要的输出那样合并
$final = Array ( [04/04/2016] =>
Array ( [TypeName_1] => Weekly [TypeID_1] => 3
[TypeName_2] => Biweekly [TypeID_2] => 7 )
[04/05/2016] =>
Array ( [TypeName_1] => Weekly [TypeID_1] => 3
[TypeName_2] => Biweekly [TypeID_2] => 7 ) )
为了合并,我使用了以下代码
$final = merge_common_keys($scheduleArray0,$scheduleArray1);
它给了我下面的多维数组。这就是我得到的
Array ([04/04/2016] =>
Array ( [0] => Array ( [TypeName_1] => Weekly [TypeID_1] => 3 )
[1] => Array ( [TypeName_2] => Biweekly [TypeID_2] => 7 ))
[04/05/2016] =>
Array ( [0] => Array ( [TypeName_1] => Weekly [TypeID_1] => 3 )
[1] => Array ( [TypeName_2] => Biweekly [TypeID_2] => 7 ) )
用户定义function-merge_common_keys
function merge_common_keys(){
$arr = func_get_args();
$num = func_num_args();
$keys = array();
$i = 0;
for ($i=0; $i<$num; ++$i){
$keys = array_merge($keys, array_keys($arr[$i]));
}
$keys = array_unique($keys);
$merged = array();
foreach ($keys as $key){
$merged[$key] = array();
for($i=0; $i<$num; ++$i){
$merged[$key][] = isset($arr[$i][$key]) ? $arr[$i][$key] : null;
}
}
return $merged;
}
EDIT - 当我用 array_merge()
合并两个数组时,我没有得到合并数组
中的 $schedule_array0
值
这应该可以解决问题:
function merge_common_keys() {
$arrays = func_get_args();
$result = [];
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if ( ! array_key_exists($key, $result)) {
$result[$key] = [];
}
$result[$key] = array_merge($result[$key], $value);
}
}
return $result;
}
结果是:
我在 PHP.I 中有两个数组,在合并这两个数组时遇到困难
$scheduleArray0=Array ([04/04/2016] =>
Array ( [TypeName_1] => Weekly
[TypeID_1] => 3)
[04/05/2016] =>
Array ( [TypeName_1] => Weekly
[TypeID_1] => 3 )
)
$scheduleArray1 = Array ( [04/04/2016] =>
Array ( [TypeName_2] => Biweekly
[TypeID_2] => 7 )
[04/05/2016] =>
Array ( [TypeName_2] => Biweekly
[TypeID_2] => 7 ) ) .
我需要它像 this.ie 我的 需要的输出那样合并
$final = Array ( [04/04/2016] =>
Array ( [TypeName_1] => Weekly [TypeID_1] => 3
[TypeName_2] => Biweekly [TypeID_2] => 7 )
[04/05/2016] =>
Array ( [TypeName_1] => Weekly [TypeID_1] => 3
[TypeName_2] => Biweekly [TypeID_2] => 7 ) )
为了合并,我使用了以下代码
$final = merge_common_keys($scheduleArray0,$scheduleArray1);
它给了我下面的多维数组。这就是我得到的
Array ([04/04/2016] =>
Array ( [0] => Array ( [TypeName_1] => Weekly [TypeID_1] => 3 )
[1] => Array ( [TypeName_2] => Biweekly [TypeID_2] => 7 ))
[04/05/2016] =>
Array ( [0] => Array ( [TypeName_1] => Weekly [TypeID_1] => 3 )
[1] => Array ( [TypeName_2] => Biweekly [TypeID_2] => 7 ) )
用户定义function-merge_common_keys
function merge_common_keys(){
$arr = func_get_args();
$num = func_num_args();
$keys = array();
$i = 0;
for ($i=0; $i<$num; ++$i){
$keys = array_merge($keys, array_keys($arr[$i]));
}
$keys = array_unique($keys);
$merged = array();
foreach ($keys as $key){
$merged[$key] = array();
for($i=0; $i<$num; ++$i){
$merged[$key][] = isset($arr[$i][$key]) ? $arr[$i][$key] : null;
}
}
return $merged;
}
EDIT - 当我用 array_merge()
合并两个数组时,我没有得到合并数组
$schedule_array0
值
这应该可以解决问题:
function merge_common_keys() {
$arrays = func_get_args();
$result = [];
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if ( ! array_key_exists($key, $result)) {
$result[$key] = [];
}
$result[$key] = array_merge($result[$key], $value);
}
}
return $result;
}
结果是: