PHP-在foreach语句外部重复脚本
我写的一个脚本有一个问题,它只是从数据库中选择条目,然后向用户发送一封电子邮件,以更新与它们相关的条目。 emailer功能的工作原理是将条目过滤到各个用户。但是,我遇到了一个问题,即发送电子邮件的次数与数据库中出现的条目的次数相同。该电子邮件包含相同的内容(所有4个条目都出现在同一封电子邮件中,但作为示例,它发送了4次) 这是邮件脚本:PHP-在foreach语句外部重复脚本,php,sql,mailer,Php,Sql,Mailer,我写的一个脚本有一个问题,它只是从数据库中选择条目,然后向用户发送一封电子邮件,以更新与它们相关的条目。 emailer功能的工作原理是将条目过滤到各个用户。但是,我遇到了一个问题,即发送电子邮件的次数与数据库中出现的条目的次数相同。该电子邮件包含相同的内容(所有4个条目都出现在同一封电子邮件中,但作为示例,它发送了4次) 这是邮件脚本: $data = getData(); $uniqueUsers = array(); foreach($data as $item){ $user = $
$data = getData();
$uniqueUsers = array();
foreach($data as $item){
$user = $item[1];
$name = $item[3];
$array = array($user, $name);
if(!in_array($array, $uniqueUsers)){
array_push($uniqueUsers, $array);
};
};
echo print_r($uniqueUsers);
echo "<br>";
echo "<hr>";
foreach($uniqueUsers as $user){
$email = $user[0];
$name = $user[1];
$fullName = explode(" ", $name);
$firstName = $fullName[0];
$updates = "";
echo $email;
echo "<br>";
echo $name;
echo "<br>";
foreach($data as $item){
if($user[0] == $item[1]){
$equipmentName = $item[0];
$approved = $item[2];
$start = $item[5];
$end = $item[6];
$updates .= $approved . " - " . $equipmentName . " (Booked from " . date('l, jS F', strtotime($start)) . " to " . date('l, jS F', strtotime($end)) . ")";
$updates .= "<br>";
};
};
echo $updates;
echo "<hr>";
mailer($email, $firstName, $updates);
};
Mailer函数:`函数Mailer($email、$firstName、$updates){
$mail=新的PHPMailer;
$subject=“资源预订”;
$htmlMessageBody=“此逻辑应该可以解决您的问题。但尚未对其进行测试,因此如果遇到任何错误,请告诉我
$user_lists = array();
foreach($data as $item){
$user = $item[1];
$name = $item[3];
$array = array($user, $name);
if(!in_array($user, $user_lists)){
array_push($uniqueUsers, $array);
$user_lists[] = $user;
};
};
希望这能有所帮助!您的in_array检查不会起作用,因为每次创建$array时,它都是一个不同的对象,尽管它所采用的值与前一个相同。谢谢!我唯一的问题是邮件程序不起作用。我想这与第二部分有关,在第二部分中,它用于每个$uniqueUsers作为$user。现在是否应该将每个$user都列为$user?您是否也可以发布您的邮件代码,并将其标记为答案以供将来参考。邮件程序现在正在工作。不确定为什么它最初不工作。现在正在测试多重重复方法,但到目前为止它看起来很好。这很酷。如果您需要其他帮助,请告诉我
Array (
[0] => Array (
[0] =>
[1] => )
[1] => Array (
[0] => ####@###.co.uk
[1] => Username )
[2] => Array (
[0] => ####@###.co.uk
[1] => Username )
[3] => Array (
[0] => #####@###.co.uk
[1] => Username )
[4] => Array (
[0] => #####@###.co.uk
[1] => Username )
[5] => Array (
[0] => ######@###.co.uk
[1] => Username )
[6] => Array (
[0] => #####@###.co.uk
[1] => Username ) )
$mail = new PHPMailer;
$subject = "Resource Bookings";
$htmlMessageBody = "<div style=font-size:10.0pt;font-family:'Arial',sans-serif;color:black;mso-fareast-language:EN-GB'>Dear " . $firstName . ",<br><br>The following resource bookings have been updated: <br><br>" . $updates . "<br><br>Many thanks,<br>TSW Support</div>";
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = '#######'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '###@####.co.uk'; // SMTP username
$mail->Password = '######';
$mail->SMTPSecure = 'tls';
$mail->Port = 25; // TCP port to connect to
//$mail->SMTPDebug = 3;
$mail->setFrom('####@#####.co.uk', 'TSW Training Group');
$mail->addAddress($email, $firstName); // Add a recipient
$mail->addReplyTo('#####@######.co.uk', 'TSW Training Group');
$mail->addCC("#####@#####.co.uk", "Support");
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $htmlMessageBody;
//$mail->AltBody = $plainMessageBody;
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
};
$user_lists = array();
foreach($data as $item){
$user = $item[1];
$name = $item[3];
$array = array($user, $name);
if(!in_array($user, $user_lists)){
array_push($uniqueUsers, $array);
$user_lists[] = $user;
};
};