Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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嵌套while/foreach循环返回奇数结果_Php - Fatal编程技术网

PHP嵌套while/foreach循环返回奇数结果

PHP嵌套while/foreach循环返回奇数结果,php,Php,我目前正试图从用于填充电子邮件功能的数据库中提取信息。我试图让它发送的电子邮件数量等于数据库中存储的电子邮件地址数量。一行可以在同一列中存储多个电子邮件地址,并用逗号分隔 示例-dave@test.com, bob@test2.com if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { if (strpos($row["mailcontacts"], ',') !== false) {

我目前正试图从用于填充电子邮件功能的数据库中提取信息。我试图让它发送的电子邮件数量等于数据库中存储的电子邮件地址数量。一行可以在同一列中存储多个电子邮件地址,并用逗号分隔

示例-dave@test.com, bob@test2.com

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {

    if (strpos($row["mailcontacts"], ',') !== false) {
    $contact = explode(',', $row["mailcontacts"]);
        //print_r($contact);

    foreach ($contact as &$toaddress) {
        $mail->addAddress($toaddress);
    }} 
我想要的功能适用于匹配的第一行。它在第一行向dave和bob发送一封电子邮件。但是,电子邮件将发送到已发送到的联系人的任何其他行。基本上,Dave和Bob会出现在每封电子邮件中


我试图在不同的地方取消设置每个不同的变量,但我认为这不是问题所在。如果我使用注释掉的print\r$toaddress,它会根据需要为每行提供数组。

如果您试图发送单独的电子邮件,则每次都需要重置地址

例如,类似于:

<?php

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {

        $contacts = explode(',', $row["mailcontacts"]);

        foreach ($contacts as $toaddress) {
            $mail->addAddress($toaddress);
        }

        $mail->send();
        $mail->resetAddresses();
    }
} 

如果您的mailer类没有重置地址的方法,您可能每次循环都必须创建一个新的$mail。

您总是在添加电子邮件,并重置它的列表。如果您向所有地址发送相同的邮件,请确保不在while循环内发送邮件。等待循环结束并添加所有地址,然后在循环结束后发送邮件。