3v4l.org

run code in 500+ PHP versions simultaneously
<?php $startArr = json_decode('[ { "meterid": 23484, "expired_total": 1 }, { "meterid": 23489, "expired_total": 3 } ]', true); $expArr = json_decode('[ { "meterid": 23478, "start_total": 1 }, { "meterid": 23489, "start_total": 1 }, { "meterid": 23490, "start_total": 2 } ]', true); // $output_result { "23478": { "meterid": 23478, "start_total": 1, "expired_total": 0 }, "23484": { "meterid": 23484, "start_total": 0, "expired_total": 1 } "23489": { "meterid": 23489, "start_total": 1, "expired_total": 3 } "23490": { "meterid": 23490, "start_total": 2, "expired_total": 0 } } $result = []; $default = array_fill_keys(['meterid', 'start_total', 'expired_total'], 0); foreach (array_merge($startArr, $expArr) as $row) { if (!isset($result[$row['meterid']])) { $result[$row['meterid']] = array_replace($default, $row); } else { $result[$row['meterid']] += $row; } } var_export($result);

preferences:
98.86 ms | 1329 KiB | 5 Q