Ajuda com script de aleatoriadade
Tenho um script que faz o sorteio de nomes aleatórios. O problema é que meu cliente quer tem nomes fixos para sem sorteados também. Até ai tudo certo. Mas se o número de ganhadores que ele escolheu for maior que o número de nomes fixos meu script entra em loop, e não consigo achar uma solução. Alguém poderia me ajudar?
for($j = 0; $j < $numGanhadores; $j++){
$index = mt_rand(0, $numParticipantes);
if(!$ganhadoresFixos){
if(!in_array($nomes[$index], $ganhadoresArray)){
$ganhadores[] = (object)[ "nome" => $nomes[$index]];
$ganhadoresArray[] = $nomes[$index];
$nomesGanhadores = implode(",", $ganhadoresArray);
}else{
$j--;
}
}else{
if(array_intersect($nomes, $ganhadoresFixos)){
if(in_array($nomes[$index], $ganhadoresFixos) && !in_array($nomes[$index], $ganhadoresArray)){
$ganhadores[] = (object)[ "nome" => $nomes[$index]];
$ganhadoresArray[] = $nomes[$index];
$nomesGanhadores = implode(",", $ganhadoresArray);
}else{
$j--;
}
}else{
if(!in_array($nomes[$index], $ganhadoresArray)){
$ganhadores[] = (object)[ "nome" => $nomes[$index]];
$ganhadoresArray[] = $nomes[$index];
$nomesGanhadores = implode(",", $ganhadoresArray);
}else{
$j--;
}
}
}
}
O ponto do loop é mais especificamente aqui:
if(in_array($nomes[$index], $ganhadoresFixos) && !in_array($nomes[$index], $ganhadoresArray)){
$ganhadores[] = (object)[ "nome" => $nomes[$index]];
$ganhadoresArray[] = $nomes[$index];
$nomesGanhadores = implode(",", $ganhadoresArray);}else{
$j--;
}
Preciso que ele veja se existem nomes na lista de participantes e na lista de vencedores fixos que ainda não foram selecionados, e se não existir ele executar o padrão
if(!in_array($nomes[$index], $ganhadoresArray)){
$ganhadores[] = (object)[ "nome" => $nomes[$index]];
$ganhadoresArray[] = $nomes[$index];
$nomesGanhadores = implode(",", $ganhadoresArray);}else{
$j--;
}Discussão (2)
Carregando comentários...