想象一下两个关联数组:
$array1= array(
array('date'=>'1-Sep-2016', 'price1'=>98),
array('date'=>'1-Oct-2016', 'price1'=>77),
array('date'=>'1-Nov-2016', 'price1'=>87),
array('date'=>'1-Dec-2016', 'price1'=>88),
array('date'=>'1-Jan-2017', 'price1'=>91)
);
$array2= array(
array('date'=>'1-Feb-2016', 'price2'=>98),
array('date'=>'1-Mar-2016', 'price2'=>77),
array('date'=>'1-Apr-2016', 'price2'=>87),
array('date'=>'1-May-2016', 'price2'=>88),
array('date'=>'1-Jun-2016', 'price2'=>91),
array('date'=>'1-Jul-2016', 'price2'=>88),
array('date'=>'1-Aug-2016', 'price2'=>88),
array('date'=>'1-Sep-2016', 'price2'=>88),
array('date'=>'1-Oct-2016', 'price2'=>88)
);
合并后的数组应如下所示:
$merged =array(
array('date'=>'1-Feb-2016', 'price2'=>98),
array('date'=>'1-Mar-2016', 'price2'=>77),
array('date'=>'1-Apr-2016', 'price2'=>87),
array('date'=>'1-May-2016', 'price2'=>88),
array('date'=>'1-Jun-2016', 'price2'=>91),
array('date'=>'1-Jul-2016', 'price2'=>88),
array('date'=>'1-Aug-2016', 'price2'=>88),
array('date'=>'1-Sep-2016', 'price1'=>98, 'price2'=>88),
array('date'=>'1-Oct-2016', 'price1'=>77, price2'=>88),
array('date'=>'1-Nov-2016', 'price1'=>87),
array('date'=>'1-Dec-2016', 'price1'=>88),
array('date'=>'1-Jan-2017', 'price1'=>91)
};
请注意以下几行:
array('date'=>'1-Sep-2016', 'price1'=>98, 'price2'=>88),
array('date'=>'1-Oct-2016', 'price1'=>77, price2'=>88),
简而言之:
我需要合并两个数组,而不从任何一个数组中删除任何元素。 Array1
将始终包含date
和price1
个元素,而array2
将始终包含date
和price2
元素。因此,如果两个数组都包含相同的日期(例如:1-Sep-2016
),则结果数组(merged
)需要通过添加price1
和price2
元素来合并它们。我希望你明白我的观点(对不起,不是以英语为母语的人):(
答案 0 :(得分:4)
您可以使用日期作为合并数组中的键来执行此操作。
$i = 1;
foreach (array($array1, $array2) as $array) {
foreach ($array as $entry) {
$key = strtotime($entry['date']); // convert to a timestamp so it will be sortable
$new_array[$key]['date'] = $entry['date'];
$new_array[$key]["price$i"] = $entry["price$i"];
}
$i++;
}
然后,如果要对结果进行排序,可以使用
ksort($new_array);