【问题标题】:Php loop foreach behave strange and prints out wrong htmlphp循环foreach行为奇怪并打印出错误的html
【发布时间】:2014-06-21 07:45:46
【问题描述】:

我正在尝试准备电子邮件 html,我有 2 组客户- 1 组只会收到电子邮件 2组将在里面收到相同的电子邮件+凭证.. 我准备了一个简短的代码来说明这个问题。这里是:

$voucher='<div>VOUCHER IMAGE COMES HERE</div>';//only group for voucher must see it
$mail_description='Here comes my mail text';
$voucherarray=array("mail1@gmail.com","mail3@gmail.com");
$mailaray=array("mail1@gmail.com","mail2@gmail.com");
$html='';
foreach($mailaray as $email){
$html.='<div>'.$mail_description.'</div>';

if(in_array($email, $voucherarray)){
$html.=$voucher;
echo $email.'is for voucher';
}else{ $email.'is not for voucher';}
$html.='<table><tr><td>here is some other text</td></tr></table>
<div clss="footer"></div>';
mail($email,'subject',$html);
}
echo $html.'<br />';    

这段代码打印出来:

mail1@gmail.comis for voucher
Here comes my mail text
VOUCHER IMAGE COMES HERE
Here comes my mail text
here is some other text

Here comes my mail text
VOUCHER IMAGE COMES HERE
Here comes my mail text
here is some other text

它有什么问题以及为什么它为两封邮件都打印出 VOUCHER IMAGE COMES HERE 因为只有一个是用于优惠券的? 它还会向所有组用户发送相同的邮件

【问题讨论】:

  • 无法复制:ideone.com/hV7ilb
  • ^ +1。该代码与您问题中的输出不匹配:codepad.org/ViydUkAH
  • 是的,我在几分钟前编辑了它,现在必须很多
  • @最后我不知道为什么它不起作用,我也测试了你的链接,但是这段代码在服务器上有效
  • 是否设置为让您的邮件阵列拥有您的所有地址(有和没有凭证),然后凭证阵列有那些获得凭证的地址?这就是您需要的,但您的代码似乎没有遵循这一点。另外,我会在循环中重新初始化 $html ,否则你会继续添加它

标签: php html loops foreach


【解决方案1】:

您需要区分您在邮件中发送的 html 和您希望看到的发送邮件的作业的输出。第二件事你需要在每次迭代后清空邮件正文变量,你不希望每个客户端都收到以前客户端的邮件内容。

$voucher='<div>VOUCHER IMAGE COMES HERE</div>';//only group for voucher must see it
$mail_description='Here comes my mail text';
$voucherarray=array("mail1@gmail.com","mail3@gmail.com");
$mailaray=array("mail1@gmail.com","mail2@gmail.com");
$html='';


foreach($mailaray as $email){
      $mailHtml = '';
      $mailHtml.='<div>'.$mail_description.'</div>';

      if(in_array($email, $voucherarray)){
            $mailHtml.=$voucher;
            echo $email.'is for voucher<br>';
      }else{ 
            echo $email.'is not for voucher<br>';
      }
      $mailHtml.='<table><tr><td>here is some other text</td></tr></table><div clss="footer"></div>';

      mail($email,'subject',$mailHtml);
      $html .= '<br>' . $mailHtml;
}
echo $html.'<br />';   

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2020-07-12
    相关资源
    最近更新 更多