2011-06-23 30 views
1

我有这样的阵列PHP的印刷阵列的帮助

Array ( 
    [3] => Array ( 
    [IDFattura] => 3 
    [Data_Scadenza] => 2011-06-23 
    [Importo] => 343.30 
    [IDTipo_Offerta] => A 
    [Email] => [email protected]) 
    [4] => Array ( 
    [IDFattura] => 4 
    [Data_Scadenza] => 2011-06-23 
    [Importo] => 98.40 
    [IDTipo_Offerta] => A 
    [Email] => [email protected]) 
    [7] => Array ( 
    [IDFattura] => 33 
    [Data_Scadenza] => 2011-06-23 
    [Importo] => 18.40 
    [IDTipo_Offerta] => A 
    [Email] => [email protected])) 

现在我需要发送一个电子邮件给每个电子邮件,但[email protected](在电子邮件正文)将有两行的表,而不是汤姆那将有1排。 希望你能理解我!

+0

'斯特凡诺@电子邮件。它))''到'[email protected])' – Synxmax

回答

0

你应该重新格式化您的数组是这样的:

$newArray = array(); 
foreach ($yourArray as $key => $value) { 
    $newArray[$value['Email']][] = $value; 
} 

它返回数组通过电子邮件进行分组。而对于[email protected] tou将拥有一个包含2个项目的数组。

0

循环遍历数组和组发票通过电子邮件:

$invoicesByEmail = array(); 

foreach($invoices as $invoice) { 
    if(!isset($invoicesByEmail[$invoice['Email']])) { 
    $invoicesByEmail[$invoice['Email']] = array(); 
    } 

    $invoicesByEmail[$invoice['Email']][] = $invoice; 
} 

然后,它是通过分组循环发票和邮寄他们的问题。

foreach($invoicesByEmail as $recipient => $invoices) { 
    $emailBody = ''; 

    foreach($invoices as $invoice) { 
    // Parse your invoice 
    } 

    Mailer::send($recipient, $emailBody, $headers); 
} 
1

试试这个代码

$newarray = array(); 
foreach($array as $item) $newarray[$item["Email"]] = 1; 
$sendarray = array_keys($newarray); 
foreach($sendarray as $item) mail(...); 

你也应该考虑array_unique

好运

+0

doh。在我加入我之前没有看到你的。 +1 .. – sdolgy

0

就个人而言,我会结构阵列略有不同。我不会设置数字键,而是将密钥设置为电子邮件地址。这样您就可以简单地使用array_unique

如果不能变化数组作为你现在,你可以通过它循环,并提取每个电子邮件地址,并把它插入到一个新的数组:

$uniqueEmails = array(); 
foreach ($yourArray as $k => $v) { 
    if (isset($v['Email']) $uniqueEmails[$v['Email']] = $v['Email']; 
} 
return $uniqueEmails;