DEV Community

Cover image for Criando um script de sorteio a partir de um CSV com PHP
lauriely lourenço
lauriely lourenço

Posted on

2

Criando um script de sorteio a partir de um CSV com PHP

No ano passado, tive a oportunidade de desenvolver um mini script para conduzir um sorteio na minha empresa. Neste artigo, vou compartilhar o código que utilizei o elefantinho.

  • Primeira parte do código:
//Nome do arquivo CSV e a coluna que será usada para o sorteio
$nomeArquivoCSV = 'sorteio.csv';
$colunaSorteio = 'descricao'; 

// Verifica se o arquivo existe
if (!file_exists($nomeArquivoCSV)) {
    die("O arquivo CSV '{$nomeArquivoCSV}' não foi encontrado.");
}

// Lê o conteúdo do arquivo CSV
$linhas = file($nomeArquivoCSV, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Verifica se o arquivo está vazio
if (empty($linhas)) {
    die("O arquivo CSV '{$nomeArquivoCSV}' está vazio ou mal formatado.");
}
Enter fullscreen mode Exit fullscreen mode

FILE_IGNORE_NEW_LINES: Cada linha do array terá quebra linha usando essa flag isso será ignorado
FILE_SKIP_EMPTY_LINES: Pula linhas vazias nome meio auto explicativo

  • Segunda parte do código:
$call = function ($array) {
    return str_getcsv($array, ";");
};

$colunas = str_getcsv(array_shift($linhas), ";");
$colunaSorteioIndex = array_search($colunaSorteio, $colunas);

if ($colunaSorteioIndex === false) {
    die("A coluna '{$colunaSorteio}' não foi encontrada no arquivo CSV.");
}

// Obtém os elementos da coluna de sorteio
$elementosSorteio = array_column(array_map($call, $linhas), $colunaSorteioIndex);
Enter fullscreen mode Exit fullscreen mode

$call é uma função anônima que recebe um array representando uma linha de dados CSV e o converte em um array usando o separador ponto e vírgula (;) através da função str_getcsv.

str_getcsv(array_shift($linhas), ";"): Esse codigo pega a primeira linha do conjunto de linhas ($linhas), a converte em um array onde cada elemento representa uma coluna, usando o ponto e vírgula (;) como separador.

array_search($colunaSorteio, $colunas): Esta linha procura o índice da coluna especificada por $colunaSorteio dentro do array de colunas ($colunas). O índice é usado para localizar a coluna desejada nos dados do CSV.

  • Agora vamos para parte final do script:
function sortearElemento(array $array)
{
    $indiceSorteado = array_rand($array);
    return $array[$indiceSorteado];
}

// Obtém os elementos da coluna de sorteio
$elementosSorteio = array_column(array_map($call, $linhas), $colunaSorteioIndex);

// Realiza o sorteio
$sorteado = sortearElemento($elementosSorteio);

// Exibe o resultado
echo "Sorte foi para : {$sorteado}";
Enter fullscreen mode Exit fullscreen mode

Link para o script

Espero que este artigo seja útil para quem estiver lendo :)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay