大家好,我有一个主要问题,我有一个长度大于4000的数组。在一个foreach循环中,我试图取消设置每个键,但它不能正常工作。
$arr=array( 0 => '365-pramo@mageos.com',
1 => '365-pram@mageos.com',`.....`
4000 => '5333-pram123@mageos.com');
这里我需要从这个数组中获取每个邮件ID和用户ID(它实际上从表中获取)我将向每个邮件ID发送邮件并在我的表中更新。这是我的代码。
if(!empty($uids_eidsArr)){
foreach($uids_eidsArr as $k=>$v){
//echo $v;
// echo $r->id;('-',
$eArr= explode('-', $v);
$headers= 'From: Ldamsin <admin@domain.org>' . "\r\n";
$headers.="MIME-Version: 1.0\r\n";
$headers.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\r\n";
$content = $res_dup[0]->newsletter_content;
@mail($eArr[1], $res_dup[0]->newsletter_subject, $content, $headers); // mail to client
$this->db->set('user_id',$sent_by);
$this->db->set('sent_to',$eArr[0]);
$this->db->set('isSubscriber',$isSubscriber);
$this->db->set('content_id',$newsId);
$this->db->insert('newsletter_senthistory');
// echo '<pre>';print_r($uids_eidsArr);echo '</pre>';
unset($uids_eidsArr[$k]);
//echo '<pre>';print_r($uids_eidsArr);echo '</pre>';
sleep(36);
} }
但并没有取消所有键的设置。我不知道是什么问题。是因为睡眠功能。因此,一些用户每次收到超过40封邮件。请帮帮我。
答案 0 :(得分:1)
$sentUser=array();
if(!empty($uids_eidsArr)){
foreach($uids_eidsArr as $k=>$v){
//echo $v;
// echo $r->id;('-',
$eArr= explode('-', $v);
$headers= 'From: Ldamsin <admin@domain.org>' . "\r\n";
$headers.="MIME-Version: 1.0\r\n";
$headers.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\r\n";
$content = $res_dup[0]->newsletter_content;
if(!in_array($eArr[0], $sentUser)){
@mail($eArr[1], $res_dup[0]->newsletter_subject, $content, $headers); // mail to client
$this->db->set('user_id',$sent_by);
$this->db->set('sent_to',$eArr[0]);
$this->db->set('isSubscriber',$isSubscriber);
$this->db->set('content_id',$newsId);
$this->db->insert('newsletter_senthistory');
// echo '<pre>';print_r($uids_eidsArr);echo '</pre>';
unset($uids_eidsArr[$k]);//it is not required
//echo '<pre>';print_r($uids_eidsArr);echo '</pre>';
sleep(36);
array_push($sentUser, $eArr[0]);
}
}
我认为在您的阵列中多次获取同一个用户。您必须优化查询。我在上面给出了另一种解决方案。