<?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