У меня есть массив со следующими значениями. Я пытаюсь создать новый массив, используя функции массива php массива и стараюсь максимально избежать foreach. Ключ, который мы используем для нового массива, это «status», и в зависимости от статуса мы создаем новый массив для каждого почтового идентификатора.
<?php
[
{
"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"
}
]
?>
Результат или новый массив, как показано ниже. Я пытаюсь достичь приведенного ниже результата, используя любую функцию массива, например, array_walk_recursive или array_reduce, которая делает код красивым и компактным.
<?php
[
[
"first_name": "Jon",
"last_name": "Doe",
"email": "jdoe@gmail.com",
"opened": 2,
"blocked": 0,
"hard_bounced": 0,
"soft_bounced": 0,
"received": 0,
"clicked": 0
],
[
"first_name": "Jane",
"last_name": "Doe",
"email": "janedoe@gmail.com",
"opened": 0,
"blocked": 0,
"hard_bounced": 0,
"soft_bounced": 0,
"sent": 2,
"clicked": 0
],
[
"first_name": "Jhon",
"last_name": "Dwaye",
"email": "Jhondw@yahoo.com",
"opened": 0,
"blocked": 0,
"hard_bounced": 0,
"soft_bounced": 0,
"sent": 0,
"clicked": 1
],
]