Sistema de sorteio com PHP

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.