2016-01-11 47 views
0

想象两种缔数组:合并两种缔PHP阵列用不同的密钥

$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将始终包含dateprice1元素,而array2将始终包含dateprice2元素。因此,如果两个数组都包含相同的日期(例如:1-Sep-2016),则结果数组(merged)需要通过添加price1price2元素将它们合并。我希望你有我的观点(对不起,不是以英语为母语):(

+0

的可能的复制[PHP数组\ _merge关联数组](http://stackoverflow.com/questions/5233721/php-array-merge-associative-arrays) – Script47

+0

@ Script47感谢您的建议,但是,我无法使用您建议的帖子,这两个答案都帮助我按照我解释的方式组合数组。 – virrion

回答

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); 
+0

哈哈哈!最好的昵称! __ + 1给你 –

相关问题