为了账号安全,请及时绑定邮箱和手机立即绑定

在电子邮件中打印数组

在电子邮件中打印数组

PHP
慕莱坞森 2022-07-29 16:08:28
尝试在电子邮件中打印一系列预订。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 循环以成功在另一个下方连续显示预订?
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

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


查看完整回答
反对 回复 2022-07-29
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

当你连接字符串时,两边的表达式.=必须计算为(或返回)一个字符串。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


查看完整回答
反对 回复 2022-07-29
  • 2 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信