打印电子邮件中的数组

尝试在电子邮件中打印一系列预订。


PHP 如下所示:


<?php

  $checkbooking = $_POST['checkbooking']; // <--string of bookings separated by commas


  $bookings = explode(',', $checkbooking); // <-- removing the commas


  $to = "myemail@email.com";

  $subject = 'list of bookings';

  $headers = "From: do not reply" . "\r\n";

  $headers .= "MIME-Version: 1.0\r\n";

  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

  $message .= "Booking Report<br /><br>";

  $message .= '<html><body>';

  $message .= '<h3>NVR Bookings</h3><br />';

  $message .= foreach($bookings as $v){echo $v . "\n";}.'<br />';  // <-- my attempt to print the bookings

  $message .= '<br />';

  $message .= '<body></html>';


  mail($to, $subject, $message, $headers);

?>

您在邮件中看到的 foreach 循环在电子邮件功能之外工作。但是一旦我把它放在电子邮件中,我就得到了一个500错误,这确实被隔离在电子邮件功能中的foreach中。


如何更新电子邮件功能或foreach循环,以成功地连续显示预订?


交互式爱情
浏览 75回答 2
2回答

慕慕森

你不能只是将PHP代码连接成一个字符串。您需要执行代码并连接字符串:$message .= '<h3>NVR Bookings</h3><br />';foreach($bookings as $v){ $message .= "$v\n<br />"; }$message .= '<br />';但是,执行下列操作之一,替换或加入会更容易:$bookings = str_replace(',', "\n<br />", $checkbooking);//or$bookings = implode("\n<br />", explode(',', $checkbooking));然后:$message .= '<h3>NVR Bookings</h3><br />';$message .= $bookings;$message .= '<br />';

慕田峪7331174

串联字符串时,每边的表达式必须计算为(或返回)字符串。 不返回字符串。此外,将数据发送到标准输出,而不是发送到变量。.=foreachecho您需要循环并在循环中对每个单独的项目进行串联。$message .= '<h3>NVR Bookings</h3><br />';foreach($bookings as $v){&nbsp;&nbsp; $message .= $v."\n<br />";&nbsp;}$message .= '<br />';但说实话,我可以看到你实际上只是用换行符替换逗号。因此,您可以节省爆炸和循环,只需执行字符串替换操作,这将直接交换字符串中的一个字符:$message .= '<h3>NVR Bookings</h3><br />';$message .= str_replace(",", "\n", $checkbooking);$message .= '<br />';文档: https://www.php.net/manual/en/function.str-replace.php
打开App,查看更多内容
随时随地看视频慕课网APP