Повторите массив, затем сбросьте еще раз несколько массивов - PullRequest
1 голос
/ 08 июля 2019

Я хочу перебрать массив, затем он должен быть сброшен снова в PHP.Следующую логику я хочу реализовать

У меня есть массив smtp и второй массив, из которого я просто хочу отправлять электронную почту один раз за smtp.На самом деле у меня есть список массивов, для которых я хочу отправлять электронную почту, но у меня есть несколько узлов SMTP.Я перебираю список массивов в цикле foreach.У меня есть массив smtp, в котором я определил определенный предел для отправки электронной почты.

function sendmail_test(){
   return "Sent<br/>";
}

$email_arrays=array(
   'test1@gmail.com',
   'test2@gmail.com',
   'test3@gmail.com',
   'test4@gmail.com',
   'test5@gmail.com',
   'test6@gmail.com',
);

$smtp_array=array(
   'gmail_smtp@gmailsmtp.com'=>10,
   'yogya_smtp@yogyasmtp.com'=>15
);


$smtp_count=count($smtp_array);
$smtp_counter=0;
for($i=0;$i<=$smtp_count;$i++){       

   foreach($email_arrays as $ek=>$ev){
        print_r($smtp_counter);
        echo sendmail_test();
    }
    $smtp_counter++;
}

На самом деле я хочу именно так.В настоящее время у меня есть два smtp в $ smtp_array

Первое электронное письмо должно быть отправлено следующим образом smtp test1@gmail.com -> gmail_smtp@gmailsmtp.com'

И второе электронное письмо должно быть отправленокак этот test2@gmail.com ', ->' yogya_smtp@yogyasmtp.com'

, а затем третье письмо должно быть отправлено, как этот test3@gmail.com -> gmail_smtp@gmailsmtp.com'

, который затем сбрасывается и будет использовать первый smtp в $ smtp_array .. Надеюсь, вы сейчас поймете мою точку зрения.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Если вы хотите перейти через все SMTP-серверы и сбросить до начала, когда у вас был последний, вы можете использовать текущий , конец , сброс и далее .

Чтобы получить значение для smtp, вы можете использовать key Затем вы можете добавить сервер smtp в список.

Например:

function sendmail_test()
{
    return "Sent<br/>";
}

$email_arrays = array(
    'test1@gmail.com',
    'test2@gmail.com',
    'test3@gmail.com',
    'test4@gmail.com',
    'test5@gmail.com',
    'test6@gmail.com',
);

$smtp_array = array(
    'gmail_smtp@gmailsmtp.com' => 10,
    'yogya_smtp@yogyasmtp.com' => 15
);

$lastElement = end($smtp_array);
reset($smtp_array);

foreach ($email_arrays as $em) {
    $current = current($smtp_array);
    //sendmail_test();
    echo "Send email $em with smtp: " . key($smtp_array) . PHP_EOL;
    next($smtp_array);

    if ($lastElement === $current) {
        reset($smtp_array);
    }
}

Результат:

Send email test1@gmail.com with smtp: gmail_smtp@gmailsmtp.com
Send email test2@gmail.com with smtp: yogya_smtp@yogyasmtp.com
Send email test3@gmail.com with smtp: gmail_smtp@gmailsmtp.com
Send email test4@gmail.com with smtp: yogya_smtp@yogyasmtp.com
Send email test5@gmail.com with smtp: gmail_smtp@gmailsmtp.com
Send email test6@gmail.com with smtp: yogya_smtp@yogyasmtp.com

Php демо

0 голосов
/ 08 июля 2019

Вы можете подойти к этому следующим образом

$hosts = array_keys($smtp_array);
foreach($email_arrays as $k => $v){
  $email = $v;
  $host  = $hosts[$k%2];
  echo $email.'----'.$host;echo '<br/>';// use $email and $host to send the email
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...