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);
Output for rfc.property-hooks, git.master, git.master_jit
array ( 23484 => array ( 'meterid' => 23484, 'start_total' => 0, 'expired_total' => 1, ), 23489 => array ( 'meterid' => 23489, 'start_total' => 0, 'expired_total' => 3, ), 23478 => array ( 'meterid' => 23478, 'start_total' => 1, 'expired_total' => 0, ), 23490 => array ( 'meterid' => 23490, 'start_total' => 2, 'expired_total' => 0, ), )

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
50.74 ms | 1324 KiB | 4 Q