Ir para conteúdo

POWERED BY:

Arquivado

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

LEANDRO FERREIRA ALMEIDA

Coparação JSON com CSV

Recommended Posts

Galera, preciso comparar dois arquivos e identificar os registros que estão faltantes. Para isso leio um arquivo JSON, coloco os registros que quero comparar em um array, em sequencia, ainda dentro do foreach que leio o JSON, estou lendo o arquivo CSV.

O problema é que entro no primeiro registro do array que crie do JSON e comparo com todos os dados do CSV, e isso é executado perfeitamente para o primeiro array do JSON, porem quando acaba a comparação do primeiro array do JSON com todos os registros do CSV o laço de repetição não esta pegando o proximo registro do JSON.

Ao debugar, descobri que ao entrar no while que leio o arquivo csv o array não volta a percorrer o laço do JSON e por isso não esta comparando todos os registros do arquivo JSON. Já mudei os laços de diversas formas mas não consegui resolver.

Abaixo o codigo:

//Leitura JSON
foreach( $json_str as $registro ):
if(property_exists($json_str[$i], 'itemvenda')){
$itemvenda = $json_str[$i]->itemvenda;
foreach ($itemvenda as $item): //propriedade itemvenda forma um array dentro do objeto json (array dentro de array) por isso estou criando um array para pegar os registros que me interessam
$registro = array($json_str[$i]->numeronotafiscal_venda,
$json_str[$i]->data_venda,
$json_str[$i]->operacao_venda,
$json_str[$i]->nome_revenda,
$json_str[$i]->cliente->cnpjcpf_cliente,
$json_str[$i]->cliente->nome_cliente,
$item->quantidade_itemvenda,
$item->produtoindustria_itemvenda,
$item->codigoproduto_produtoindustria,
$item->precobruto_itemvenda,
$item->precoliquido_itemvenda
);
//Ao dar um print_r($registro) aqui apresenta todos os registros do JSON corretamente
if($f){ //começo a ler o arquivo csv
////Ao dar um print_r($registro) aqui apresenta todos os registros do JSON corretamente
while(!feof($f)) {
////Ao dar um print_r($registro) aqui tenho apenas o primeiro array do json e não mais todos os arrays com todos os registro
$linha = fgetcsv($f, 0, $delimitador);
if(!$linha){
continue;
}
//Neste IF farei a comparação do objeto do JSON com cada CSV, funciona apenas para o primeiro array do JSON
if($regJson[1] == $nf){
print_r($regJson);
}
}
}
endforeach;
}
//if($json_str[$i]->nome_revenda <> $revAnterior)
//echo $json_str[$i]->nome_revenda . '<br>';
//$revAnterior = $json_str[$i]->nome_revenda;
$i++;
endforeach;

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.