$array['mail'] = array( '[email protected]','[email protected]','[email protected]','[email protected]','[email protected]', '[email protected]', '[email protected]', '[email protected]', 'sis@[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]');
$z=0;
foreach ($array['mail'] as $key => $v){
$server = substr($v,strripos($v,"@") + 1,strlen($v) - strripos($v,"@"));
$flag = 1;
if ($z > 0)
{
foreach ($server_array['name'] as $index => $mail)
{
if ($mail == $server) {$flag = 0; $array['type'][$key] = $index;}
}
}
if ($flag == 1){
$server_array['name'][$z]=$server;
$server_array['type'][$z]=$z;
$array['type'][$key] = $z;
$z++;
}
echo $v." type = ".$array['type'][$key]."<br>";
}
$sum = $key+1;
/* простое перемешивание
shuffle ($array['mail']);
foreach ($array['mail'] as $v){
echo $v."<br>";
}
*/
echo "<br><br>";
foreach ($server_array['name'] as $key => $v){
$buf = 0;
foreach ($array['type'] as $type){
if ($type == $key) {$buf++;}
}
$server_array['count'][$key] = $buf;
$server_array['step'][$key] = round(($sum - $buf)/$buf+1,2);
echo $v." count = ".$server_array['count'][$key]." step = ".$server_array['step'][$key]." type=".$server_array['type'][$key]."<br>";
}
echo "<br><br><br> sum=".$sum."<br><br><br>";
arsort($server_array['count']);
$new_array = array();
foreach ($server_array['count'] as $key => $v){
//echo $v." name = ".$server_array['name'][$key]." step = ".$server_array['step'][$key]." type=".$server_array['type'][$key]."<br>";
$step = 0;
foreach ($array['type'] as $k => $val){
if ($server_array['type'][$key] == $val){
//echo $array['mail'][$k]."<br>";
$round_step = round($step,0);
$z=0; $n=1;
$round_step_old = $round_step;
while ($new_array[$round_step]){
if ($z==0){ if (($round_step_old + $n) < $sum) {$round_step = $round_step_old + $n;} $z=1; }
elseif ($z==1){ if ( ($round_step_old - $n) >= 0) {$round_step = $round_step_old - $n;} $z=0; $n++;}
if ((($round_step_old + $n) >= $sum) AND (($round_step_old - $n) < 0)){
//echo "ERROR!!! n=".$n."round_step_old=".$round_step_old."round_step=$round_step"."<br>";
echo "ERROR!";
continue;
}
}
$new_array[$round_step] = $array['mail'][$k];
$step = $step + $server_array['step'][$key];
}
}
}
for ($i=0; $i<$sum; $i++) {
echo $new_array[$i]."<br>";
}