Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis do pliku
Forum PHP.pl > Forum > PHP
cesarks
Witam,
mam problem z właściwym zapisem do pliku:

zawartość plik.txt:
1
2
3

<?php
$tab = file("plik.txt");
$tab[0]+=1
$tab[1]+=1
$tab[2]+=1

//teraz chcę zapisać zawartość tablicy do pliku

$plik=fopen("wyniki.txt","w+");

for ($i=0; $i<count($tab); $i++)
{
fputs($plik,$tab[$i]);
}

?>

w pliku zamiast:
2
3
4

jest:
23
4

Co muszę zrobić aby kolejne wartości były zapisywane w kolejnych wierszach
(probowałem "<BR>" "/n" - nic to nie daje)
Astarot
Kod
fputs($plik,$tab[$i]);


zamień na:

Kod
fputs($plik,$tab[$i]."\r\n");
cesarks
Niestety nic to nie dało:

jak zrobię tak:

  1. <?php
  2.  
  3. $tab = file("plik.txt");
  4. $plik = fopen("wyniki.txt","w+");
  5.  
  6. for ($i=0; $i<3; $i++)
  7. {
  8.  fputs($plik,"$tab[$i]"); 
  9. }
  10.  
  11. ?>

to pobiera z pliku:
1
2
3
i zpisuje do pliku też:
1
2
3
Czyli wszystko jest ok

ale gdy po drodze zmienię wartość w $tab[] :

  1. <?php
  2.  
  3. $tab = file("wyniki.txt");
  4. $plik=fopen("wyniki.txt","w+");
  5.  
  6. $tab[0]=5;
  7.  
  8. for ($i=0; $i<count($tab); $i++)
  9. {
  10.  fputs($plik,"$tab[$i]"); 
  11. }
  12.  
  13. ?>

to po zapisaniu do pliku:
52
3
zamiast
5
2
3

jeżeli dam "\r\n" to plik wygląda tak:
5
2

3
nospor
Kod
<?php
$tab = file("plik.txt");


$plik=fopen("wyniki.txt","w+");

for ($i=0; $i<count($tab); $i++)
{
fputs($plik,($i>0 ? "\r\n" : '').($tab[$i] + 1)); 
}
?>

a teraz \r\n lub \n w zaleznosci od tego czy masz winde czy linuxa
Sedziwoj
Cytat(nospor @ 5.12.2006, 10:53:36 ) *
a teraz \r\n lub \n w zaleznosci od tego czy masz winde czy linuxa

lub \r jeśli mac biggrin.gif
siemakuba
kontynuując: lub stała PHP_EOL jeśli chcesz mieć w nosie różnice międzysystemowe dotyczące znaku nowej linii :)

pozdr.
cesarks
Jest ok., sprytne rozwiązanie winksmiley.jpg
Tylko mam takie dziwne wrażenie że likwiduje to skutek a nie przyczynę, ale spoko najważniejsze że działa,
ciekawe tylko że jak wpiszę:
zamiast
...($tab[$i] + 1));
(nie chcę zwiększać wartości z tabeli o 1)
...($tab[$i]));
to znowu dostaję zapis z przerwami
ale jak napiszę:
...($tab[$i] + 0));
to wszystko jest ok.
ale jaja.

pozdrawiam i dzięki za pomoc.
nospor
zadne jaja. file() zwraca ci tablice ze znakiem konca wiersza w kazdym elemencie. Gdy robisz dodawnaie, to znak konca wiersza jest pomijany gdyz wartosc jest konwertowana na int. Gdy nic nie robisz, to wkladasz do pliku element ze znakiem konca wiersza + dodatkowo sam dokladasz ten znak smile.gif

edit: to skoro nie chcesz zmieniac wartosci to nie lepiej skopiowac plik przy pomocy copy() ?
cesarks
teraz wszystko jasne, dzięki.
Cytat
edit: to skoro nie chcesz zmieniac wartosci to nie lepiej skopiowac plik przy pomocy copy() ?

zmieniać to będę ale w połączeniu z formularzem, a chodziło mi jedynie żeby zapisywał do pliku dokładnie tak jak chcę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.