我想迭代数组,然后应在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_array中有两个smtp
第一个电子邮件应以此smtp触发 test1@gmail.com-> gmail_smtp@gmailsmtp.com'
第二封电子邮件应以此发送 test2@gmail.com',->'yogya_smtp@yogyasmtp.com'
,然后应该这样触发第三封电子邮件 test3@gmail.com-> gmail_smtp@gmailsmtp.com'
然后重置,它将在$ smtp_array中使用第一个smtp。 我希望你能明白我的意思。
答案 0 :(得分:0)
您可以按照以下方式进行处理
$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
}
答案 1 :(得分:0)
如果要遍历所有smtp服务器并在拥有最后一个服务器时将其重置为开始,则可以使用current,end,reset和{{3 }}。
要获取smtp的值,可以使用next,然后也可以key到列表。
例如:
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