3v4l.org

run code in 300+ PHP versions simultaneously
<?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);
Output for 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
array ( 0 => array ( 'date' => '1-Feb-2016', 'price2' => 98, ), 1 => array ( 'date' => '1-Mar-2016', 'price2' => 77, ), 2 => array ( 'date' => '1-Apr-2016', 'price2' => 87, ), 3 => array ( 'date' => '1-May-2016', 'price2' => 88, ), 4 => array ( 'date' => '1-Jun-2016', 'price2' => 91, ), 5 => array ( 'date' => '1-Jul-2016', 'price2' => 88, ), 6 => array ( 'date' => '1-Aug-2016', 'price2' => 88, ), 7 => array ( 'date' => '1-Sep-2016', 'price1' => 98, 'price2' => 88, ), 8 => array ( 'date' => '1-Oct-2016', 'price1' => 77, 'price2' => 88, ), 9 => array ( 'date' => '1-Nov-2016', 'price1' => 87, ), 10 => array ( 'date' => '1-Dec-2016', 'price1' => 88, ), 11 => array ( 'date' => '1-Jan-2017', 'price1' => 91, ), )

preferences:
61.2 ms | 409 KiB | 5 Q