Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]serialize i unserialize odczyt pliku
Forum PHP.pl > Forum > Przedszkole
prz3kus
No to od początku:

Mam tablice wielowymiarową:
  1. <?php
  2. $kom = array(array("komentarz", "komentarz"),
  3. array("komentarz"));
  4. ?>


chce dodać do niej jeszcze jedną i stosuje:


  1. <?php
  2. $news2 = array("cos tam");
  3. array_push($kom, $news2);
  4. ?>


Natępnie używam polecenia serialize

  1. <?php
  2. $tab = serialize($kom);
  3. ?>


I zapisuje do pliku:

  1. <?php
  2. $file="kom.txt";
  3. $fp = fopen($file, "w+"); 
  4. fwrite($fp, "$tab");
  5. fclose($fp);
  6. ?>



I teraz zaczynają sie schody jak załadować s powrotem zawartość do pliku php aby można było użyć opcji

  1. <?php
  2. $kom = unserialize($tab);
  3. ?>


i przywrócić tablice na stronie

Pozdrawiam Przemek
bartek00
Witam

Proponowalbym na poczatek zobaczyc jak wyglada $tab po instrukcji $tab = serialize($kom);
musisz odczytac jedna linie z pliku (w jaki sposob, odsylam do www.php.net/manual/en/ref.filesystem.php);
i dalej tak jak napisales $kom = unserialize($tab);

Pozdrawiam
prz3kus
Tak wygląda przed serialize

  1. <?php
  2. Array ( [0] => Array ( [0] => komentarz [1] => komentarz ) [1] => Array ( [0] => komentarz ) )
  3. ?>


A tak po

  1. <?php
  2. a:2:{i:0;a:3:{i:0;s:9:"komentarz";i:1;s:9:"komentarz";i:2;a:1:{i:0;s:20:"tutaj beda komentarz";}}i:1;a:1:{i:0;s:9:"komentarz";}}
  3. ?>


I taką samą wartość ma w pliku.
próbowałem ją odczytać na wiele sposobów ale nic nie działa:

Dawałem np. coś takiego:

  1. <?php
  2. $lines = file('kom.txt');
  3.  
  4. $kom = unserialize($lines[0]);
  5. print_r ($lines);
  6. ?>


To otrzymuje taki wynik po wyświetleniu
  1. <?php
  2. Array ( [0] => a:2:{i:0;a:3:{i:0;s:9:"komentarz";i:1;s:9:"komentarz";i:2;a:1:{i:0;s:20:"tutaj beda komentarz";}}i:1;a:1:{i:0;s:9:"komentarz";}} )
  3. ?>


Może wie ktoś jakiej opcji czy chwytu użyć bo mi już ręce opadają sadsmiley02.gif
bartek00
To jest kod, ktroy rozwieje twoje watpliwosci:

  1. <?php
  2. // otwierasz plik (f to jest uchwyt do pliku, ktory zostaje zwrocony)
  3. $f = fopen('kom.txt', "r");
  4.  
  5. // pobiera linie z pliku, ktorego uchwyt przekazesz (wystarczy jedna linia, widziales jak wyglada po serialize)
  6. $line = fgets($f);
  7.  
  8. // dalej juz wiesz o co chodzi (mam nadzieje)
  9. $kom = unserialize($line);
  10.  
  11. echo '<pre>' . var_dump($kom) . '</pre>';
  12. ?>


Pozdrawiam
mike
Nie mam pojęcia w czym macie problem.
  1. <pre><?php
  2.  
  3. $kom = array(array("komentarz", "komentarz"), array("komentarz"));
  4. $str = serialize($kom);
  5. file_put_contents('test.txt', $str);
  6.  
  7.  
  8. ?></pre>
wynik:
Kod
Array
(
    [0] => Array
        (
            [0] => komentarz
            [1] => komentarz
        )

    [1] => Array
        (
            [0] => komentarz
        )

)
prz3kus
Dziękuje za dwie wspaniałe wypowiedzi obie śmigają, teraz zanim zadam pytanie je**ne sie mocniej patelka

Pozdrawiam i miłego dnia wszystkim :roll2:
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.