猿问

在电子邮件中打印数组

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


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 循环以成功在另一个下方连续显示预订?


慕莱坞森
浏览 89回答 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 />';

翻翻过去那场雪

当你连接字符串时,两边的表达式.=必须计算为(或返回)一个字符串。foreach不返回字符串。此外,echo将数据发送到标准输出,而不是变量。您需要在每个单独的项目上循环并在循环内进行连接。$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
我要回答