PHP数组-按电子邮件地址域排序(备用)


PHP Arrays - Sort by Email Address Domain (alternate)

我有一组要发送电子邮件的电子邮件地址。

我想用交替的域名对它们进行排序,所以如果我有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示例