$new_array = array();
foreach ($orig_array as $child) {
$new_array[$child['id']][] = $child['email'];
}
$final_array = array();
foreach($new_array as $child) {
$final_array[] = $child;
}
Первый цикл создает массив, связанный с полями id, и просто помещает на него каждый адрес электронной почты. Затем второй цикл берет этот промежуточный массив и оборачивает вокруг него другой массив для ключей 0,1 и т. Д.