【问题标题】:Php print array helpphp打印数组帮助
【发布时间】:2011-06-23 07:35:49
【问题描述】:

我有这个数组

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 行。 希望你能理解我!

【问题讨论】:

  • stefano@email.it ) )stefano@email.it )

标签: php arrays printing


【解决方案1】:

试试这个代码

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

你也应该考虑array_unique

祝你好运

【讨论】:

    【解决方案2】:

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

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

    它返回按电子邮件分组的数组。对于stefano@email.it,tou 将有一个包含 2 个项目的数组。

    【讨论】:

      【解决方案3】:

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

      $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);
      }
      

      【讨论】:

        【解决方案4】:

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

        如果您不能更改现在得到的数组,您可以遍历它并提取每个电子邮件地址并将其插入到新数组中:

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

        【讨论】: