<?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_map(function($email) use($source) {
$events = array_values(array_filter($source, function($event) use($email) {
return $event['email'] == $email;
}));
return [
"first_name" => $events[0]["first_name"],
"last_name" => $events[0]["last_name"],
"email" => $email,
"opened" => count(array_filter($events, function($event) { return $event["status"] == "opened"; })),
"blocked" => count(array_filter($events, function($event) { return $event["status"] == "blocked"; })),
"hard_bounced" => count(array_filter($events, function($event) { return $event["status"] == "hard_bounced"; })),
"soft_bounced" => count(array_filter($events, function($event) { return $event["status"] == "soft_bounced"; })),
"sent" => count(array_filter($events, function($event) { return $event["status"] == "sent"; })),
"clicked" => count(array_filter($events, function($event) { return $event["status"] == "clicked"; })),
];
}, array_unique(array_column($source, "email")));
print_r($result);
preferences:
55.54 ms | 402 KiB | 5 Q