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));

preferences:
24.67 ms | 408 KiB | 5 Q