упорядочить значения в массиве
У меня есть массив, который содержит домены
array(
"yandex.ru",
"mail.ru",
"mail.ru",
"yandex.ru",
"gmail.com",
"rambler.ru",
"mail.ru",
)
Мне нужно, чтобы массив был перемешан таким образом, чтобы при переборе домены находились один за одним без повторов и, при этом, все были в равной степени максимально удалены друг от друга. Такое возможно ?
например:
array(
"yandex.ru",
"mail.ru",
"gmail.com",
"rambler.ru",
"yandex.ru",
"mail.ru",
"mail.ru", - тут допускается повтор, т.к больше доменов нет для формирования списка
)
мне это нужно, чтобы при рассылке на email, письмо отправлялось по очереди на разные домены, чтобы избежать возможных банов
Ответы (1 шт):
У вас есть массив:
$a = array(
"yandex.ru",
"mail.ru",
"mail.ru",
"yandex.ru",
"gmail.com",
"rambler.ru",
"mail.ru",
);
Фильтруем его так:
$b = array_unique($a);
И получаем массив уникальных значений. Теперь в $b у нас:
$b = array(
"yandex.ru",
"mail.ru",
"gmail.com",
"rambler.ru",
);
Теперь запускаем цикл по $b. В каждой итерации цикла берем домен из $b и ищем его в $a. Если нашли в $a, посылаем письмо и вычеркиваем этот домен из $a. Если не нашли в $a, то вычеркиваем этот домен из $b. Если дошли до конца $b, а $a еще не пустое, то снова запускаем цикл по $b... и тд пока не опустеет $a.
- Под вычеркиванием подразумевается
unset. - Под поиском подразумевается
array_search.