为什么我的foreach循环不起作用?

时间:2013-08-17 15:36:31

标签: php

我需要帮助,我需要通过php邮件功能邮件所以在消息字段中我应该制作一个HTML文本,但在本文中我有循环来计算一个数组来回显表的数据,但出了点问题,有谁知道为什么它没有工作???

public function sendmail($arr){
    $to = $_SESSION['email'];
    $subject = 'کارت شارژ';
    $message = '<html>
                    <head>
                      <title>کد شارژ خریداری شده شما</title>
                    </head>
                    <body>
                      <p>از خرید شما متشکریم</p>
                      <table>
                        <tr>
                          <th>#شماره</th><th>کد شارژ</th>
                        </tr>
                        '+ 
                        foreach ($arr as $i){
                            echo '<tr><td>'.$i.'</td></tr>';
                        }
                            +'
                      </table>
                    </body>
                </html>';
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

    $headers .= 'To: '.$_SESSION['phone'].' <'.$to.'>' . "\r\n";
    $headers .= 'From: hameja123 <hameja123@hameja123.ir>' . "\r\n";
    mail($to, $subject, $message, $headers);
}

3 个答案:

答案 0 :(得分:2)

您不能将代码拼接成类似的字符串。此外,+用于添加,而不是连接。

尝试预先计算行:

$rows = "";
foreach($arr as $i) $rows .= "<tr><td>".$i."</td></tr>";

然后你可以将它连接起来:

"...... ".$rows." .......";

答案 1 :(得分:0)

将部分代码更改为:

$data = '';
foreach ($arr as $i){
    $data .= '<tr><td>'.$i.'</td></tr>';
}
$message = '<html>
                <head>
                  <title>کد شارژ خریداری شده شما</title>
                </head>
                <body>
                  <p>از خرید شما متشکریم</p>
                  <table>
                    <tr>
                      <th>#شماره</th><th>کد شارژ</th>
                    </tr>
                    '.$data.'
                  </table>
                </body>
            </html>';

您无法使用字符串插入foreach内联。

答案 2 :(得分:0)

不要使用

foreach ($arr as $i){
                            echo '<tr><td>'.$i.'</td></tr>';
                        }

在“$ message =”声明中。

相反,请在$message = '<html>

之前执行此操作
$string='';
foreach($arr as $i)
$string = $string.'<tr><td>$i</td><tr>';

现在,在$ message =,

这样做:

<tr>
                          <th>#شماره</th><th>کد شارژ</th>
                        </tr>
                        $string
                      </table>