3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array1 = json_decode('[ { "date":"2018-06-23", "size":"L", "type":"shoes", "value_one":"66" }, { "date":"2018-06-23", "size":"XL", "type":"shirt", "value_one":"43" }, { "date":"2018-06-23", "size":"M", "type":"Bag", "value_one":"23" } ]', true); $array2 = json_decode( '[ { "date":"2018-06-23", "size":"L", "type":"shoes", "value_two":"28" }, { "date":"2018-06-23", "size":"XL", "type":"shirt", "value_two":"56" }, { "date":"2018-06-23", "size":"M", "type":"Bag", "value_two":"14" }, { "date":"2018-06-23", "size":"S", "type":"Cap", "value_two":"29" } ]', true); $defaults = array_fill_keys(['date', 'size', 'type', 'value_one', 'value_two'], null); $result = []; foreach (array_merge($array1, $array2) as $row) { $compositeKey = implode('_', array_slice($row, 0, 3)); $result[$compositeKey] = array_merge($result[$compositeKey] ?? $defaults, $row); } var_export(array_values($result));

preferences:
26.74 ms | 410 KiB | 5 Q