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

时间:2017-09-29 11:07:39

标签: php

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

(示例 - 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)作为注释,它会根据需要为每一行提供数组。

1 个答案:

答案 0 :(得分:1)

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

例如:

suser_name()

如果你的邮件程序类没有重置地址的方法,那么每次循环时你可能不得不创建一个新的<?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(); } }