Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Luiz

Array_combine dando Warning

Recommended Posts

Olá pessoal,

Não estou conseguindo achar o motivo do WARNING do meu array_combine... Poderiam me ajudar a encontrar o motivo?

  $abre_arq = fopen($arquivo,"r"); // Abro arquivo carregado através de um formulário
  $cabecalho = fgetcsv($abre_arq, 0,";"); // Checo a primeira linha do CSV  
  
while(!feof($abre_arq) !== FALSE){
$linha = fgetcsv($abre_arq, 0,";"); // Abro o CSV para poder ler linha a linha
$x = array_combine($cabecalho, $linha); // Combino os array do Cabecalho com os da linha para manipular mais facilmente
echo $x["NOME"]." - ".$x["TELEFONE"]." - ".$x["EMAIL"]." - ".$x["DADO_1"]." - ".$x["DADO_2"]."<br>";
 }

Este é um código basico para que eu possa ler o conteudo de um CSV que o meu cliente vai importar e na sequencia salvá-lo no MySQL.
O Warning que estou recebendo é - expects parameter 2 to be array, boolean

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro não está no array_combine, mas no segundo parâmetro passado à ele, no caso $linha, que deveria em algum ponto da execução ser um array, mas está sendo FALSE...

O problema é que você não está verificando o fim da leitura do fgetcsv para interromper o script. Siga o exemplo contido no manual do PHP e adapte para o seu caso:

http://php.net/manual/pt_BR/function.fgetcsv.php

<?php
$row = 1;
 if (($handle = fopen("teste.csv", "r")) !== FALSE) {
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {//é isso que você precisa...
         $num = count($data);
         echo "<p> $num campso na linha $row: <br /></p>\n";
         $row++;
         for ($c=0; $c < $num; $c++) {
             echo $data[$c] . "<br />\n";
         }
     }
    fclose ($handle);
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Matheus!

Após essa luz eu atualizei o código e agora está certo

$arquivo  = $pasta."/".$arqName;
  $abre_arq = fopen($arquivo,"r");
  $cabecalho = fgetcsv($abre_arq, 0,";");
  
while(($linha = fgetcsv($abre_arq, 1000, ";")) !== FALSE){
$x = array_combine($cabecalho, $linha);
echo $x["ID"]."<br>";

  }

Não sei se estou 100% mas "tenho" que usar o array_combine para poder trabalhar os dados recebidos da planilha que seguira um modelo fixo.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.