3v4l.org

run code in 300+ PHP versions simultaneously
<?php $str = <<<EOL [ { "tax": "10", "concept": "TUC", "val": "10" }, { "tax": "10", "concept": "TUC", "val": "86" }, { "tax": "15", "concept": "TUC", "val": "8" }, { "tax": "11", "concept": "IPS", "val": "6" }, { "tax": "11", "concept": "IPS", "val": "45" } ] EOL; $array = json_decode($str); $result = array_reduce($array, function($carry, $item) { if(!isset($carry[$item->tax])) { $carry[$item->tax] = $item; } else { $carry[$item->tax]->val += $item->val; } return $carry; }); $result = array_values($result); print_r(json_encode($result));
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.31, 8.2.0 - 8.2.26, 8.3.0 - 8.3.15, 8.4.1 - 8.4.2
[{"tax":"10","concept":"TUC","val":96},{"tax":"15","concept":"TUC","val":"8"},{"tax":"11","concept":"IPS","val":51}]

preferences:
92.62 ms | 408 KiB | 5 Q