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

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 :)

Top comments (0)