php 打印电子邮件中的数组

6qftjkof  于 2023-04-04  发布在  PHP
关注(0)|答案(2)|浏览(104)

尝试在电子邮件中打印一系列预订。
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循环,以成功地连续显示预订一个在另一个下面?

yiytaume

yiytaume1#

你不能只是把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 />';
w46czmvw

w46czmvw2#

当你连接字符串时,.=两边的表达式必须计算(或返回)一个字符串。foreach不返回字符串。此外,echo将数据发送到标准输出,而不是变量。
您需要循环并在循环中对每个单独的项进行串联。

$message .= '<h3>NVR Bookings</h3><br />';
foreach($bookings as $v){ 
  $message .= $v."\n<br />"; 
}
$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

相关问题