PHP似乎进入了无限的foreach循环

时间:2016-09-28 11:36:23

标签: php loops foreach infinite

我使用以下代码:

$array = explode("\n", file_get_contents($file));
// Here $file contains n e-mail addresses


foreach ($array as $value) {
    $check = file_get_contents('file.txt');     
    $subject = 'Subject (' . $entry . ')';
    $to  = $value;

    if ($check < $credits){
        $message = '...';
    }
    else{
        $message = '...';
    }
    $headers  = 'MIME-Version: 1.0' . "с\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $headers .= 'From: '...' . "\r\n";
    mail($to, $subject, $message, $headers);
}

读取包含n个电子邮件地址的文件。对于每封电子邮件,都会发送一条消息。文件中没有任何内容被更改。

大部分时间它工作得非常好并且只向每个地址发送一条消息。有时,它似乎进入无限循环并开始向同一地址发送多条消息。

如有需要,我可以提供更多详情。

2 个答案:

答案 0 :(得分:0)

我没有看到任何可能导致无限循环的事情。 带有电子邮件地址的文件可能包含重复的电子邮件。

尝试这样的确认:

$array = explode("\n", file_get_contents($file));
print_r(array_count_values($array));

应输出如下内容:

Array
(
[me@host.com] => 2
[her@host.com] => 1
[him@host.com] => 3
...
)

答案 1 :(得分:0)

您的代码在连接字符串时遇到一个小错误。

错误

$headers .= 'From: '...' . "\r\n";

$headers = 'From: . \ R \ n";

我没有看到任何可以使用foreach产生无限循环的内容,请尝试使用&#39; var_dump($ array)&#39;来检查即将发布的值。