Ir para conteúdo

POWERED BY:

Arquivado

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

Joaopedro23434we

Problemas com loop

Recommended Posts

Olá pessoal, venho aqui de novo pedir-lhes ajuda com um probleminha que desde ontem 3h da tarde não consigo resolver. Tentei resolver o seguinte exercício: "Um banco deseja emitir uma listagem de todos os clientes cujos saldos sejas iguais ou superiores a R$1.500,00.

Blz, ele pede que seja lido um arquivo chamado clientes.txt, e nesse arquivo vai conter o código da conta, o nome do cliente e o saldo.

Fiz a leitura certinha, e dei um explode nos espaços para pegar o saldo e verificar se ele é maior ou igual e 1.500,00, só que quando eu vou tentar salvar os saldos que são maiores, mostra apenas 1 dos saldos no arquivo txt chamado relatorio.txt, ou seja, dá um erro doido que não consegui resolver desde ontem e estou com dor de cabeça pois já tentei de várias formas e nada:

 $dir = "det/clientes.txt";
  $aa = fopen($dir, "r");
  $lp = 0;
  $minVal = 1500;
  $vet = array();
  $arn = array();
  $r = 0;
  while(!feof($aa)){
      $lines = fgets($aa, 500);
      $vet[$lp] = $lines;
      $ds = explode(" ", $vet[$lp]);
          if($ds[2]>=$minVal){
              $arn = $ds[0].$ds[1].$ds[2];
              $ad = fopen("det/relatorio.txt", "w+");
              for($i=0;$i<=$r;$i++){
                   fwrite($ad, $arn[$i]);
              }
              fclose($ad);
              $r++;
          }
      $lp++;
  }
  fclose($aa);

O txt é este:

53454 Joao_Pedro 1500
53454 Lucas 560
53454 Pablo 1200
53454 italo 1600
53454 Ana 4000
53454 sergio 1300
53454 Joao 1700
53454 Edmar 14000

O que ele deveria fazer era fazer uma lista no relatorio.txt com usuários com saldo igual ou acima de 1500, porém o resultado é esse no relatorio.txt:

53454

Esse código é um pouco maior, eu teria que salvar ainda um cabeçalho e um rodapé, mas não estou conseguindo salvar nem os usuários. Me ajudem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui está amigo

<?PHP
$dir = "det/clientes.txt";
$aa = fopen($dir, "r");
$lp = 0;
$minVal = 1500;
$vet = array();
$arn = array();
$r = 0;
while(!feof($aa)){
$lines = fgets($aa, 500);
$vet[$lp] = $lines;
$ds = explode(" ", $vet[$lp]);
if($ds[2]>=$minVal){

array_push($arn,$ds[0].$ds[1].$ds[2]);
$ad = fopen("det/relatorio.txt", "w+");
for($i=0;$i<=$r;$i++){
fwrite($ad, $arn[$i]);
}
fclose($ad);
$r++;
}
$lp++;
}
fclose($aa);

?>

O problema era que você estava substituindo o array por uma linha,então eu alterei e coloquei o Array_push,que é uma função para adicionar elemento ao array.

 

 

Saída:

53454Joao_Pedro1500
53454italo1600
53454Ana4000
53454Joao1700
53454Edmar14000

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Aqui está amigo

<?PHP
$dir = "det/clientes.txt";
$aa = fopen($dir, "r");
$lp = 0;
$minVal = 1500;
$vet = array();
$arn = array();
$r = 0;
while(!feof($aa)){
$lines = fgets($aa, 500);
$vet[$lp] = $lines;
$ds = explode(" ", $vet[$lp]);
if($ds[2]>=$minVal){

array_push($arn,$ds[0].$ds[1].$ds[2]);
$ad = fopen("det/relatorio.txt", "w+");
for($i=0;$i<=$r;$i++){
fwrite($ad, $arn[$i]);
}
fclose($ad);
$r++;
}
$lp++;
}
fclose($aa);

?>

O problema era que você estava substituindo o array por uma linha,então eu alterei e coloquei o Array_push,que é uma função para adicionar elemento ao array.

 

 

Saída:

53454Joao_Pedro1500
53454italo1600
53454Ana4000
53454Joao1700
53454Edmar14000

muito obrigado, resolveu meu problema :D

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.