Hoje iremos desenvolver um sisteminha de sorteio bem simples que pode ser utilizado em alguns casos. Iremos armazenar nossos participantes em um array, porém o mais correto seria armazena-los em um banco de dados, mas o conceito é o mesmo.
Veja como o sistema funciona, clicando aqui.
<?php
// Matriz com todos os participantes
$participantes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila", "Roberto");
// Definindo o número de participantes
$numParticipantes = sizeof($participantes);
// Informações adicionais
$chances = round((1 / $numParticipantes) * 100);
echo "- Temos no total <b>".$numParticipantes."</b> participantes; <br />";
echo "- Cada participante teve <b>".$chances."%</b> de chance de ganhar; <br /><br />";
// Sorteando
# Primeiro ganhador
$sorteado[1] = $participantes[rand(0,$numParticipantes - 1)];
# Segundo ganhador
for ($i = 1; $i < 2; $i++) {
$sorteado[2] = $participantes[rand(0,$numParticipantes - 1)];
// Caso o ganhador já tenha saido, sorteia novamente.
if ($sorteado[2] == $sorteado[1]) {
--$i;
}
}
# Terceiro ganhador
for ($i = 1; $i < 2; $i++) {
$sorteado[3] = $participantes[rand(0,$numParticipantes - 1)];
// Caso o ganhador já tenha saido, sorteia novamente.
if ($sorteado[3] == $sorteado[1] || $sorteado[3] == $sorteado[2]) {
--$i;
}
}
// Exibindo ganhadores
echo "<b>Ganhadores:</b> <br />";
echo "<b>1°</b> - " . $sorteado[1] . "<br />";
echo "<b>2°</b> - " . $sorteado[2] . "<br />";
echo "<b>3°</b> - " . $sorteado[3] . "<br />";
?>
Agora vou tentar explicar melhor o sisteminha:
– Linha 4: Colocamos todos os participantes em um array(), porém como já foi dito, o mais correto seria colocar os participantes em uma tabela no banco de dados;
– Linha 7: Armazenamos o numero de participantes em uma variável;
– Linha 10: Calculamos a chance que o participante tem de ganhar (em %);
– Linha 11 e 12: Exibimos as informações adicionais;
– Linha 17: Sorteamos o primeiro ganhador e armazenamos o individuo em um array(). Utilizamos a função rand() para sortear um numero desde 0 (zero) até o numero máximo de participantes, colocamos “-1” pois lembre-se que em um array o primeiro valor sempre é 0 (zero) e não 1;
– Linha 20 a 26: Utilizamos o laço for() para sortear o segundo ganhador, pois se o segundo ganhador for igual a o primeiro, precisamos sortear novamente até sair um participante diferente;
– Linha 29 a 35: Utilizamos novamente o laço for(), desta vez para sortear o terceiro ganhador. E segue o mesmo conceito do segundo ganhador;
– Linha 38 a 42: Exibimos os ganhadores.
Isso é apenas uma base de como você pode desenvolver um sistema de sorteio, o conceito praticamente será sempre o mesmo. Até mais.