Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Zapis zawartości tablicy do pliku.
inomushis
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 12.02.2008

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


Witam,
chciałbym zapytać jak zapisać zawartość tablicy do pliku, ale tak, aby każdy z jej elementów znajdował się w oddzielnym wierszu.
Z góry dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Dodaj do wartości znak końca lini., czyli "\n"
Go to the top of the page
+Quote Post
l0ud
post
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Zakładamy, że jest to 'standardowa' tablica jednowymiarowa (kolejne elementy nazwane cyframi od 0). Przed zapisem po prostu przerób ją na string funkcją implode:

  1. <?php
  2. $s_array = array('jeden', 'dwa');
  3. $string = implode("\n",$s_array);
  4.  
  5. file_put_contents('asd.txt',$string);
  6. ?>


Przy odczytywaniu (jeżeli chcesz to robić) użyj funkcji explode() dla uzyskania na powrót tablicy.

Ten post edytował l0ud 27.02.2008, 13:59:31
Go to the top of the page
+Quote Post
inomushis
post
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 12.02.2008

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


Okej, jeden skrypt gotowy.
A teraz, jak zapisać wynik działania takiego skryptu do pliku (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
  1. <?php
  2. $lines = file('playlista.lst');
  3. shuffle($lines);
  4. foreach ($lines as $line_num => $line) {
  5. if($line_num == count($lines)-1) $line = trim($line);
  6. if ($line_num % 6 == 0) echo 'mp3/reklama1.mp3'."r\n";
  7. if ($line_num % 21 == 0) echo 'mp3/reklama2.mp3'."r\n";
  8. echo "$line";
  9. }
  10. ?>

Chodzi o zapisanie gotowej playlisty z wstawionymi reklamami (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował inomushis 27.02.2008, 14:33:29
Go to the top of the page
+Quote Post
nospor
post
Post #5





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




pomysl troche: zamiast na ekran (echo) zapisuj tekst do zmiennej. a na koniec zapisz zmienna do pliku

i uzywaj wlasciwego bbcode
Go to the top of the page
+Quote Post
l0ud
post
Post #6





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Coś w tym stylu:

  1. <?php
  2. $lines = file_get_contents('playlista.lst');
  3. $lines = explode("r\n",$lines);
  4. shuffle($lines);
  5. $output_lines = array();
  6.  
  7. foreach ($lines as $line_num => $line) {
  8. if($line_num == count($lines)-1) $line = trim($line);
  9. if ($line_num % 6 == 0) $output_lines[count($output_lines)] = 'mp3/reklama1.mp3';
  10. if ($line_num % 21 == 0) $output_lines[count($output_lines)] = 'mp3/reklama2.mp3';
  11. $output_lines[count($output_lines)] = $line;
  12. }
  13.  
  14. $output_lines = implode("r\n",$output_lines);
  15.  
  16. file_put_contents('playlista.lst',$output_lines);
  17. ?>
Go to the top of the page
+Quote Post
arecki
post
Post #7





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


A nie prościej:
  1. <?php
  2. file_put_contents('filename.txt', serialize(array('jeden', 'dwa', 'trzy')));
  3.  
  4. $array = unserialize(file_get_contents('filename.txt');
  5. ?>

?

Ps. Wiem że ma być jedna linia w jednym pliku ale jeżeli plik ten jest wykonywany tylko na potrzeby PHP to spokojnie to co powyżej powinno wystarczyć

Ten post edytował arecki 27.02.2008, 21:49:07
Go to the top of the page
+Quote Post
hugo_z_doliny_po...
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.10.2013

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


Witam! Ja mam podobny problem z zapisem tablicy do pliku tekstowego, tylko chodzi mi o zapisanie tablicy dwuwymiarowej. W poniższym kodzie załadowałem tablicę z pliku tekstowego, chciałem usunąć jeden wiersz z niej posługując się zmienną "kod" z formularza, zamieniłem tablicę na string posługując się funkcją explode no i chciałem zapisać ją znowu do tego samego pliku. Oto kod:

  1. <?php
  2.  
  3. //deklaracja zmiennych
  4. $DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
  5. $kod=$_POST['kod'];
  6.  
  7.  
  8. //usuwanie towaru
  9.  
  10. //ladowanie pliku do tablicy
  11. $tablica=file("$DOCUMENT_ROOT/bazatowarow.txt");
  12. //sprawdzenie czy baza nie jest pusta
  13. $ilosctowaru=count($tablica);
  14. if ($ilosctowaru==0)
  15. { echo "<p><strong>Brak towarów w bazie.<p></strong></body></html>"; exit;}
  16. //podzielenie tablicy na tablice dwuwymiarowa
  17. for ($x=0; $x<$ilosctowaru; $x++)
  18. {$linia=explode("\t",$tablica[$x]);}
  19. //usuniecie wiersza z pomocą zmiennej kod
  20. if ($tablica[$x][0] == $kod) {
  21. unset ( $tablica[$x][0] );
  22. unset ( $tablica[$x][1] );
  23. unset ( $tablica[$x][2] );
  24. }
  25. //zamiana tablicy w string
  26. $string = implode($tablica);
  27. //zapisanie nowej tablicy i zamkniecie pliku
  28. $ciągzapisu=$string;
  29. $usun=fopen("$DOCUMENT_ROOT/bazatowarow.txt",'wb');
  30. fwrite($usun, $ciągzapisu);
  31. fclose($usun);
  32. echo "<p><strong>Towar usunięto!<p></strong>"
  33. ?>


W przeglądarce to:

Notice: Undefined offset: 3 in C:\xampp\htdocs\bazatowarow\przetworzusun.php on line 24

Towar usunięto!

ale w pliku tekstowym nie usuwa wiersza, zawartość pozostaje ta sama.

Dopiero zaczynam przygodę z PHP, więc bardzo możliwe, że robię jakiś bardzo prosty błąd. Z góry dzięki za jakiekolwiek uwagi.
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




Wyswietla ci tekst "Towar usunieto" bo ty go wyswietlasz bezwarunkowo, niezaleznie czy usunales czy nie.... Wyswietlaj go tylko wteedy, gdy usuniecie naprawde mialo miejsce....

Sprawdz, czy ci w ogole wszedl w tego IFa z unset. Sprawdz inne miejsca. Naprawde, od sprawdzenia pewnych rzeczy glowa nie boli.

zrob sobie print_r($tablica); i zobacz co tam masz. A tam nie masz tablicy dwuwymiarowej, jak ci sie wydaje, wiec nie mozesz robic IF jakby tam byla tablica dwuwymiarowa.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 09:35