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

时间:2014-04-09 23:40:07

标签: php arrays

我有一系列电子邮件地址,我正在发送电子邮件。

我想通过交替使用域名对它们进行排序,所以如果我有30个@ gmail.com,30个@yahoo.com和30个@ aol.com,那么排序会产生@ gmail.com,然后是@yahoo .com,然后是@ aol.com,然后是@gmail.com等等。

排序将尽可能地交替排列,以便连续存在相同的域名。

为什么:为防止被视为垃圾邮件来源,最好“限制”电子邮件发送,或者在每次发送之间休眠,以便邮件服务器在短时间内不会被垃圾邮件快速击中多次。相反,我想这样做是为了在电子邮件提供商被我击中之间创建一个延迟,但不会停止我的脚本并导致我的最终用户延迟。

1 个答案:

答案 0 :(得分:1)

我可以这样做:

$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 sample