3v4l.org

run code in 300+ PHP versions simultaneously
<?php $source = [ [ "mail_id" => "29848947", "last_name" => "Doe", "first_name" => "Jon", "email" => "jdoe@gmail.com", "status" => "opened" ], [ "mail_id" => "340980398", "last_name" => "Doe", "first_name" => "Jane", "email" => "janedoe@gmail.com", "status" => "sent" ], [ "mail_id" => "877586", "last_name" => "Dwaye", "first_name" => "Jhon", "email" => "Jhondw@yahoo.com", "status" => "clicked" ], [ "mail_id" => "225253463", "last_name" => "Doe", "first_name" => "Jon", "email" => "jdoe@gmail.com", "status" => "opened" ], [ "mail_id" => "849849w4", "last_name" => "Doe", "first_name" => "Jane", "email" => "janedoe@gmail.com", "status" => "sent" ] ]; $result = array_values(array_reduce($source, function($carry, $event) { if(!array_key_exists($event['email'], $carry)) { $carry[$event['email']] = [ "first_name" => $event["first_name"], "last_name" => $event["last_name"], "email" => $event["email"], "opened" => 0, "blocked" => 0, "hard_bounced" => 0, "sent" => 0, "clicked" => 0 ]; } $carry[$event['email']][$event["status"]]++; return $carry; }, [])); print_r($result);

preferences:
59.77 ms | 402 KiB | 5 Q