Справка по массиву печати Php - PullRequest
1 голос
/ 23 июня 2011

У меня есть этот массив

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

Теперь мне нужно отправить ОДНО электронное письмо на каждое электронное письмо, но stefano@email.it (в теле письма) будет иметь таблицу с двумя строками вместо Тома, который будетесть 1 ряд.Надеюсь, ты меня понимаешь!

Ответы [ 4 ]

1 голос
/ 23 июня 2011

попробуйте этот код

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

Вы также должны рассмотреть array_unique

удачи

0 голосов
/ 23 июня 2011

Лично я бы структурировал массив немного иначе.Вместо цифровых клавиш я бы назначил ключ в качестве адреса электронной почты.Таким образом, вы можете просто использовать array_unique .

Если вы не можете изменить массив так, как вы его получаете сейчас, вы можете пройти по нему, извлечь каждый адрес электронной почты и вставить в новый массив:

$uniqueEmails = array();
foreach ($yourArray as $k => $v) { 
  if (isset($v['Email']) $uniqueEmails[$v['Email']] = $v['Email'];
}
return $uniqueEmails;
0 голосов
/ 23 июня 2011

Цикл по массиву и групповые счета по электронной почте:

$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);
}
0 голосов
/ 23 июня 2011

Вы должны переформатировать ваш массив следующим образом:

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

Возвращает массив, сгруппированный по электронной почте. А для stefano@email.it у tou будет массив из 2 элементов.

...