<?php
$array1 = [
['date' => '1-Sep-2016', 'price1' => 98],
['date' => '1-Oct-2016', 'price1' => 77],
['date' => '1-Nov-2016', 'price1' => 87],
['date' => '1-Dec-2016', 'price1' => 88],
['date' => '1-Jan-2017', 'price1' => 91],
];
$array2 = [
['date' => '1-Feb-2016', 'price2' => 98],
['date' => '1-Mar-2016', 'price2' => 77],
['date' => '1-Apr-2016', 'price2' => 87],
['date' => '1-May-2016', 'price2' => 88],
['date' => '1-Jun-2016', 'price2' => 91],
['date' => '1-Jul-2016', 'price2' => 88],
['date' => '1-Aug-2016', 'price2' => 88],
['date' => '1-Sep-2016', 'price2' => 88],
['date' => '1-Oct-2016', 'price2' => 88]
];
$stamps = [];
$result = [];
foreach (array_merge($array1, $array2) as $row) {
$stamps[$row['date']] = strtotime($row['date']);
$result[$stamps[$row['date']]] = ($result[$stamps[$row['date']]] ?? []) + $row;
}
array_multisort($stamps, $result);
var_export($result);
preferences:
26.13 ms | 407 KiB | 5 Q