<?php
$array=[
['invoice_id'=>'WUI_588','email'=>'abc@hotmail.com'],
['invoice_id'=>'WUI_588','email'=>'def@hotmail.com'],
['invoice_id'=>'WUI_589','email'=>'ninja@hotmail.com'],
['invoice_id'=>'WUI_589','email'=>'ghi@hotmail.com'],
['invoice_id'=>'WUI_590','email'=>'123@hotmail.com'],
['invoice_id'=>'WUI_590','email'=>'123@hotmail.com'],
['invoice_id'=>'WUI_591','email'=>'456@hotmail.com'],
['invoice_id'=>'WUI_591','email'=>'456@hotmail.com']
];
foreach($array as $row){ // iterate all rows
if(!isset($result[$row['invoice_id']])){ // if first occurrence of invoice_id...
$result[$row['invoice_id']]=$row; // save the full row with invoice_id as the temporary key
}else{ // if not the first occurrence of invoice_id...
$result[$row['invoice_id']]['email'].=", {$row['email']}"; // concatenate the email value
}
}
var_export(array_values($result));