Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapis do pliku
cesarks
post 5.12.2006, 08:58:51
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.12.2006

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
Astarot
post 5.12.2006, 09:10:04
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


Kod
fputs($plik,$tab[$i]);


zamień na:

Kod
fputs($plik,$tab[$i]."\r\n");


--------------------
torrenty
Go to the top of the page
+Quote Post
cesarks
post 5.12.2006, 10:47:04
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.12.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 5.12.2006, 10:53:36
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Sedziwoj
post 5.12.2006, 11:01:22
Post #5





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
siemakuba
post 5.12.2006, 11:18:45
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


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

pozdr.
Go to the top of the page
+Quote Post
cesarks
post 5.12.2006, 11:30:30
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.12.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 5.12.2006, 11:36:01
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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() ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cesarks
post 5.12.2006, 12:27:59
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.12.2006

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 23:09