我有一组要发送电子邮件的电子邮件地址。
我想用交替的域名对它们进行排序,所以如果我有30@gmail.com、30@yahoo.com和30@aol.com,排序结果会是@gmailcom,然后是@yahoocom,然后又是@aol.com,然后是@mail.com,等等。
排序将尽可能交替,这样一行中就可以有尽可能少的相同域名。
原因:为了防止被认为是垃圾邮件的来源,最好"节流"电子邮件发送,或者在每次发送之间休眠,这样邮件服务器就不会在短时间内多次被垃圾邮件快速攻击。相反,我想在电子邮件提供商被我击中的时间之间创建一个延迟,但不会停止我的脚本并给我的最终用户造成延迟。
我可以这样做:
$organized_emails = array();
$needle_key = 0;
$needle_search = array('gmail', 'yahoo', 'aol', 'others');
while(true) {
$current_value = array_shift($emails);
if(strpos($current_value, $needle_search[$needle_key]) !== false) {
$organized_emails[] = $current_value;
$needle_key++;
if($needle_key > 3) {
$needle_key = 0;
}
} else {
array_push($emails, $current_value);
}
if(empty($emails)) {
break;
}
}
PHP Fiddle示例