我有2个数组,每个数组都有一个日期字符串和一个表示'amount'的字符串值。第一个数组在start_date和end_date之间每天都有一行,但是'amount'没有任何内容。第二个数组的行数较少,但数量较少。我需要合并2个数组,这样我每天最后会得到一行,如果有的话,那就是当天的数量。
阵列1:每天,没有金额:
Array(
[20040601] => Array( [amount] => )
[20040602] => Array( [amount] => )
...
[20100506] => Array( [amount] => )
[20100507] => Array( [amount] => )
)
数组2:每行的唯一日期,有金额,而不是每天的条目:
Array(
[20040618] => Array( [amount] => 19764 )
[20040727] => Array( [amount] => 18008 )
...
[20040925] => Array( [amount] => 5480 )
[20041007] => Array( [amount] => 12522 )
)
结果:
Array(
[20040618] => Array( [amount] => 19764 )
[20040619] => Array( [amount] => )
[20040620] => Array( [amount] => 5967)
[20040621] => Array( [amount] => )
...
[20040625] => Array( [amount] => 5480 )
[20040626] => Array( [amount] => 12522 )
[20040627] => Array( [amount] => 4523 )
)
编辑:显示结果数组好一点。
结果数组每天会包含一行,如果有,则包含当天的相应数量。所以基本上,合并日期键并返回日期和金额。我试图让merge_array工作,但我在这个过程中失去了约会。必须有一个本机函数来执行此操作,而无需通过迭代循环遍历数组。
答案 0 :(得分:1)
array_merge_recursive($array1, $array2);
答案 1 :(得分:1)
我试图让merge_array工作 但我失去了约会 过程
这是由日期字符串转换为数字类型引起的,这会导致array_merge()
行为不同。如果您使用PHP不会转换为数字的字符串键,它应该执行您想要的操作:
$arr1 = array(
'2004-06-01' => array('amount' => null),
'2004-06-02' => array('amount' => null),
'2010-05-06' => array('amount' => null),
'2010-05-07' => array('amount' => null),
);
$arr2 = array(
'2004-06-01' => array('amount' => 50),
'2004-06-02' => array('amount' => 100),
'2010-05-08' => array('amount' => 200),
'2010-05-07' => array('amount' => 250),
);
print_r(array_merge($arr1, $arr2));