Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-在foreach语句外部重复脚本_Php_Sql_Mailer - Fatal编程技术网

PHP-在foreach语句外部重复脚本

PHP-在foreach语句外部重复脚本,php,sql,mailer,Php,Sql,Mailer,我写的一个脚本有一个问题,它只是从数据库中选择条目,然后向用户发送一封电子邮件,以更新与它们相关的条目。 emailer功能的工作原理是将条目过滤到各个用户。但是,我遇到了一个问题,即发送电子邮件的次数与数据库中出现的条目的次数相同。该电子邮件包含相同的内容(所有4个条目都出现在同一封电子邮件中,但作为示例,它发送了4次) 这是邮件脚本: $data = getData(); $uniqueUsers = array(); foreach($data as $item){ $user = $

我写的一个脚本有一个问题,它只是从数据库中选择条目,然后向用户发送一封电子邮件,以更新与它们相关的条目。 emailer功能的工作原理是将条目过滤到各个用户。但是,我遇到了一个问题,即发送电子邮件的次数与数据库中出现的条目的次数相同。该电子邮件包含相同的内容(所有4个条目都出现在同一封电子邮件中,但作为示例,它发送了4次)

这是邮件脚本:

$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;
    };
    };