LEANDRO FERREIRA ALMEIDA 0 Denunciar post Postado Janeiro 4, 2017 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