Advertisement
carlosfeitozafilho

Lendo um .csv com linha com nomes das colunass

Sep 14th, 2019
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.81 KB | None | 0 0
  1. <?php
  2.     // Abre o arquivo .csv
  3.     $dados = fopen("./dados.csv","r");
  4.    
  5.     // Se o arquivo foi carregado com sucesso...
  6.     if ($dados) {
  7.         // Realiza a leitura da primeira linha do csv, a qual contém apenas os
  8.         // nomes das colunas
  9.         $colunas = explode(";",Trim(fgets($dados)));
  10.        
  11.         // Para cada linha do arquivo...
  12.         while ($linha = fgets($dados)) {
  13.             // Separa cada elemento da linha em um array para fácil acesso de
  14.             // cada valor
  15.             $valores = explode(";",Trim($linha));
  16.            
  17.             // Cria uma instância de um objeto vazio, pois cada elemento útil do
  18.             // array será um objeto
  19.             $registro = new stdClass();
  20.            
  21.             // Varre o array de colunas a fim de incluir, para cada uma delas,
  22.             // um atributo com seu nome no objeto registro, ao mesmo tempo em
  23.             // que atribui o valor correspondente que vem do array valores
  24.             for ($i = 0; $i < count($colunas); $i++) {
  25.                 $registro->$colunas[$i] = Trim($valores[$i]);
  26.             }
  27.  
  28.             // Com o código original, cria um elemento associativo e ediciona
  29.             // neste um item de array com o objeto registro recém criado. Usando
  30.             // codigo original como associação permite que o arquivo não esteja
  31.             // em ordem, pois toda vez que o fluxo de execução passar na linha
  32.             // abaixo, automaticamente será selecionado o elemento de arrayFinal
  33.             // correto (codigo original)
  34.             $arrayFinal[$registro->codigo_original][] = $registro;
  35.         }
  36.         // Faça o que quiser com arrayfinal. Aqui eu simplesmente exibo o valor
  37.         print_r($arrayFinal);
  38.     }
  39.     // Fecha o arquivo de dados
  40.     fclose($dados);
  41. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement