首页 > 解决方案 > 在电子邮件中打印数组

问题描述

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

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

标签: phparraysloopsemailforeach

解决方案


您不能只是将 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 />';

推荐阅读