MalCriada 1 Denunciar post Postado Abril 2, 2015 Boa noite!!! Tenho um scritp que lê o arquivo de retorno cnab240 do banco. Gostaria de printar o valor pago pelo cliente, mas ele está exibindo sempre apenas o primeiro valor pago e repetindo esse valor nas faturas seguintes. A exibição do número da fatura paga está correta, só me perdi na necessidade da leitura de outra linha onde é exibido o valor pago em cada fatura. O problema está no segundo foreach, já que o primeiro está funcionando corretamente e mostra todas as faturas. O arquivo de retorno tem duas linhas para cada boleto compensado. Na primeira linha mosta o número do documento que no caso é o número da fatura e na segunda outros itens, dentre eles o valor pago. Podem me dar uma luz?? Deixo abaixo a parte problemática do código. <? while (!feof ($aponta)) { $linha = fgets($aponta, 9999); if(strpos($linha,'T')==true){ // pega a linha com a letra T $newline[] = explode(" ",$linha); } if(strpos($linha,'U')==true){ // pega a linha com a letra U $newline2[] = explode(" ",$linha); } } foreach ($newline as $v) { if(strlen($v[1])==37){ $nossonumero = (int) substr($v[1], 22,-6); $datapagamento = date('Y-m-d'); foreach ($newline2 as $v2) { $u_v_pago = substr($v2[1],77,15); $valorpago = formataNumero($u_v_pago); } // $i++; if($i % 2 == 0){ $cor = 'style="background:#fff"'; }else{ $cor = 'style="background:#f4f4f4;"'; } echo $nossonumero; echo $valorpago; } } ?> Obrigada pela atenção!!! :coolio: Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Abril 3, 2015 olá analisando assim por alto me parece que você tem que colocar o segundo laço dentro do primeiro pois me parece que o segundo laço deve ser rodado em cada volta do primeiro não é? Compartilhar este post Link para o post Compartilhar em outros sites
MalCriada 1 Denunciar post Postado Abril 3, 2015 olá analisando assim por alto me parece que você tem que colocar o segundo laço dentro do primeiro pois me parece que o segundo laço deve ser rodado em cada volta do primeiro não é? obrigada @marsolim ... é isso mesmo, o segundo deve ser rodado a cada volta do primeiro... eu já tentei, mas não tá dando certo... Quando mudo e coloco o segundo rodando dentro do primeiro fica tudo desordenado e os resultados são exibidos de forma repetida e o valor pago não é exibido corretamente na sua respectiva fatura. Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Abril 3, 2015 já tentou limpar as variáveis do segundo laço depois de cada volta do primeiro laço? algo tipo $variável = ""; while(condição aqui){ foreach(os dados aqui){ $variavel = "dado da variável"; } $variável = ""; // limpa a variável para receber os dados da próxima volta. } Compartilhar este post Link para o post Compartilhar em outros sites