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."); }
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);
$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}";
Espero que este artigo seja útil para quem estiver lendo :)
Top comments (0)