【问题标题】:Shuffle and separate similar strings随机播放并分离相似的字符串
【发布时间】:2016-07-12 22:32:07
【问题描述】:

我想按域打乱电子邮件,使它们尽可能远离彼此。示例:

之前的数组:

email@hotmail.com、email2@hotmail.com、email3@hotmail.com、 email@gmail.com、email2@gmail.com、email3@gmail.com、email@yahoo.com、 email2@yahoo.com

它会变成这样:

数组之后:

email@hotmail.com、email@gmail.com、email@yahoo.com、 email2@hotmail.com、email2@gmail.com、email2@yahoo.com、 email3@hotmail.com, email3@gmail.com

如何使用数组来做到这一点?如果有任何关于 PHP 的例子,那就太好了。

【问题讨论】:

标签: php sorting


【解决方案1】:
<?php

$emails = array(
    'mail1@gmail.com',
    'mail2@gmail.com',
    'mail3@gmail.com',
    'mail4@gmail.com',
    'mail5@gmail.com',

    'mail1@yahoo.com',
    'mail2@yahoo.com',
    'mail3@yahoo.com',
    'mail4@yahoo.com',
    'mail5@yahoo.com',

    'mail1@aol.com',
    'mail2@aol.com',
    'mail3@aol.com',
    'mail4@aol.com',
    'mail5@aol.com',

    'mail1@others.com',
    'mail2@others.com',
    'mail3@others.com',
    'mail4@others.com',
    'mail5@others.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;
    }
}

echo '<pre>';
print_r($organized_emails);
echo '</pre>';

抱歉,我刚刚在PHP Arrays - Sort by Email Address Domain (alternate)找到了我需要的东西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2013-10-29
    • 2020-11-23
    相关资源
    最近更新 更多