我有以下代码:
<?php
$participants_db = "test_test_test_test_test_test_Sticky_Sticky_Sticky_Sticky_";
$participants = array_unique(explode("_", $participants_db));
foreach($participants as $user)
{
echo $user . '\n';
sleep(10);
}
?>
我花了几个小时调试这个脚本,它实际上获得了每个用户名并向每个用户发送电子邮件, 事情是它是为每个用户发送电子邮件,但$ user没有改变...我想知道为什么睡眠打破Foreach和如何来解决这个问题.. http://3v4l.org/b048m
更新 这是完整的代码:
foreach($participants as $user)
{
if($user == '')
{
//echo 'broken';
break 1;
}
//get each user's email address
$sql3 = $dbh->prepare("SELECT * FROM users WHERE username = ?");
$sql3->execute(array($user));
while($a = $sql3->fetch())
{
$email = $a['email'];
$username = $a['username'];
}
$message = str_replace("{USERNAME}", $username.'_'.$user, $message);
sendemail($email, $cc, $from, $subject, $message, $filename, $filepath);
//sleep(10);
}
数组(参与者)包含用户名,每个用户都有不同的电子邮件地址。 这个脚本由一个cron作业执行。执行后它发送电子邮件到2封电子邮件(例如),并且它说 Test_test 对两个电子邮件有不同的用户名 我只是想知道,它是如何得到电子邮件和用户名仍然相同???
答案 0 :(得分:0)
问题是str_replace
它用用户名替换{USERNAME},然后在执行后,$ message不包含{USERNAME}导致其主要问题...