Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] skasowanie co drugą linijke w pliku i zapisanie zmiany
Forum PHP.pl > Forum > Przedszkole
maryaan
to ze jestes zielona jeszcze nie upowaznia Cie do crosspostingu na dzien dobry :] a jesli chodzi o to kasowanie co drugiej linii to sprawa jest bardzo prosta, wystarczy funkcja file a pozniej zapis do pliku otrzymanej tablicy, oczywiscie z pominieciem parzystych elementow (lub nieparzystych - na to samo wyjdzie)
fokusa
Witam, mam do szkoły zadanie, żeby skasować co drugą linijkę w pliku i zapisać zmiany. Musze zrobić prezentacje krok po kroku jak to sie robi, było by świetnie gdyby nie to, że nie mam pojęcia od czego zacząć, nie znam się na php, ledwo umiem odczytać plik:) Prosze pomóżcie, bo nie wiem co mam zrobić. Bardzo dziekuje z góry za pomoc. blinksmiley.gif
Sokal
  1. <?php
  2. $plik = 'plik.txt';  # nazwa pliku
  3. $odczytane = file($plik);
  4. $zero = 'tak';  # czy zapisać pierwszy element tablicy? (parzyste)
  5. $ile = count($odczytane);
  6. if($zero == 'tak')
  7. {
  8. for($i=0;$i<=$ile;$i++)
  9. {
  10. $dziel = $liczba % 2;
  11. if($dziel == 0)
  12.  $tablica[] = $odczytane;
  13. }
  14. }
  15. else if($zero == 'nie')
  16. {
  17. for($i=0;$i<=$ile;$i++)
  18. {
  19. $dziel = $liczba % 2;
  20. if($dziel <> 0)
  21.  $tablica[] = $odczytane;
  22. }
  23. }
  24. ?>

Co drugą wartość masz teraz w $tablica, wystarczy już zapisać winksmiley.jpg
Powinno działać winksmiley.jpg
fokusa
Dzięki bardzo za ten kodzik, tylko, że początek jakoś tam rozumiem , ale nie wiem co to ta tablica, no i jak krok po kroku wytłumaczyć innym co do czego służy, jak już wspominałam prawie nic nie umiem. eh No i sory za błędy i kłopoty
webdice
@Sokal strasznie dużo Ci tego kodu wyszło smile.gif

  1. <?php
  2. $file = file ('file.txt');
  3.  
  4. for ($i = 0; $i < count ($file); $i++)
  5. {
  6. if ($i % 2)
  7. {
  8. $new_file[] = $file[$i];
  9. }
  10. }
  11.  
  12. file_put_contents ('file.txt', $new_file);
  13. ?>


a jeśli chcesz aby liczyło od zera to zmień instrukcje warunkową na
  1. <?php
  2. if (!($i % 2))
  3. ?>


Uważam że skrypt jest bardzo prosty, więc nie będę tłumaczył, a jeśli nie rozumiesz to manual Ci na pewno pomoże.
fokusa
Cytat(webdicepl @ 31.03.2007, 13:08:53 ) *
  1. <?php
  2. $file = file ('file.txt');
  3.  
  4. for ($i = 0; $i < count ($file); $i++)
  5. {
  6. if ($i % 2)
  7. {
  8. $new_file[] = $file[$i];
  9. }
  10. }
  11.  
  12. file_put_contents ('file.txt', $new_file);
  13. ?>

tak więc <? to jest otwarcie , to wiem
file to znaczy że otwiera plik, domyśliłam się, tylko z pętlą for nie rozumiem jednego:
czemu zmienna $i jest równa 0 nie może być jeden to jest jakaś różnica? no i ten drugi warunek to juz całkiem bo <count($file); co on daje?
Aha i jeszcze warunek if co zanczy ten %? Że co drugą linijke kasuje? Dzięki że mi pomagacie, jak widzicie sami jestem totalna noga, ja nie wiem jak zrobiłam że mam 4 ze spawdzianów laugh.gif winksmiley.jpg winksmiley.jpg
maryaan
dziewczyno rusz glowa (a jak nie pomoze to biustem :] ) tongue.gif w pierwszym poscie masz link do opisu funkcji file http://pl.php.net/file gdzie mozna przeczytac co sie stanie po uzyciu tej funkcji, jesli chodzi o zero to oczywiscie numeracja tablic jest od zera, dlatego ostatni element ma numer o jeden mniejszy niz liczba elementow tablicy.
count jest tu http://pl.php.net/count manual nie gryzie winksmiley.jpg

btw dlaczego moj post jest pierwszy blink.gif laugh.gif
webdice
  1. <?php
  2. if ($i % 2)
  3. ?>


poczytaj o modulo, jeśli zwróci true zostają wykonane instrukcje w if'ie, dodam że zapis

  1. <?php
  2. $new_file[] = $file[$i];
  3. ?>


dodaje do tablicy $new_file linie z pliku file.txt (w tym przypadku co drugą) z indeksem o jeden większym od poprzedniego zaczynając od zera. Jeśli chcesz zobaczyć jak wygląda tabla $file i $new_file skorzystaj z print_r" title="Zobacz w manualu PHP" target="_manual

Pozdrawiam Piotrek.
fokusa
Ok już poczytałam, no nie denerwujcie sie na mnie, coś tam niby rozumiem... Juz wiem dzieki bardzo za zadanie. Tylko jeszcze jedno małe pytanie file_put_contents , co to robi? Otwiera .. ale co nowy plik ze zmianami? Tego nie moge nigdzie znaleźć.thx
maryaan
http://pl.php.net/file_put_contents
fokusa
Dziękuje wszytskim za pomoc, jesteście kochani ( a przedewszystkim za nerwy thx tongue.gif )
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.