-1

大家好,我有一个主要问题,我有一个长度大于 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 封邮件。请帮我。

4

1 回答 1

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]);
            }



    }  

我认为在您的数组中多次获取同一用户。您必须细化您的查询。我在上面给出了一个替代解决方案。

于 2013-06-11T12:44:16.937 回答