Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Numerownie lini pliku
Forum PHP.pl > Forum > Przedszkole
kiler129
Mam sobie plik x.txt i chce aby kazda linia tego pliku miała numer np. taki plik:

cos
jasio
kasia
marysia

zaminiał się w to:

1. cos
2. jasio
3. kasia
4. marysia

No i problem ejst tego rodzaju ze juz pomysłów mi brak Rkingsmiley.png

Dla testów napisałęm coś takiego:

  1. <?php
  2. $fp = fopen('test.txt', "r");
  3. $data = fread($fp, filesize('test.txt'));
  4. $data = explode("n", $data);
  5.  
  6. $i = 0;
  7. while(count($data) >= $i)
  8. {
  9. $data[$i] = $i.'.'.$data[$i];
  10. $i++;
  11. } 
  12.  
  13. var_dump($data);
  14. ?>


I po 3 sec dziłąnia na pliku z 3 liniami otrzymuje takie coś:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16 bytes) in G:\httpd\scan\num.php on line 7

Prosze o pomoc !
strife
Użyj do tego file" title="Zobacz w manualu PHP" target="_manual winksmiley.jpg

  1. <?php
  2. foreach( file('dupa.txt') as $line => $value ) {
  3. echo ( $line + 1 ) . '. ' . $value;
  4. }
  5. ?>


@kwiateusz - Ha tongue.gif
kiler129
A tak z ciekawości dlaczego moj kod tak dziwnie działa tongue.gif ?
Cysiaczek
Dlatego, że warunek
  1. <?php
  2. while(count($data) >= $i)
  3. ?>

jest zawsze prawdziwy - przy każdej iteracji.
Powinno być
  1. <?php
  2. while($i <= count($data))
  3. ?>


Pozdrawiam.
Kicok
Cytat
jest zawsze prawdziwy - przy każdej iteracji.
Powinno być
  1. <?php
  2. while($i <= count($data))
  3. ?>


Przecież to jest to samo.


Cytat
A tak z ciekawości dlaczego moj kod tak dziwnie działa tongue.gif ?

Klucze tablicy $data zaczynają się od zera, więc liczba elementów twojej tablicy będzie zawsze "maksymalny klucz + 1"
Na przykład jeśli zmienna $i ma wartość 3, to ilość elementów tablicy będzie równa co najmniej 4 (0,1,2,3). Zmienną $i jest w pętli inkrementowana ($i++), więc przy sprawdzaniu warunku też będzie miała wartość 4, czyli warunek:
( count($data) >= $i ) zawsze będzie prawdą

W dodatku twój kod numerowałby linijki od zera ;]
Cysiaczek
@Kicok - : > Przemyśl raz jeszcze, bo różnica jest i to wielka jak kanion.
count($data) jest niemal jak stała. Jest ogranicznikiem.

Twierdzisz, że te zdania są równe?
"Dopuki ilośc elelemntów w tablicy jest większa niż aktualna $i, rób coś"
- ilośc elementów zawsze będzie większa niz $i, bo jest większa niż 0, a $i ciągle rośnie

"Dopuki $i jest mniejsza od ilości elelemntów w tablicy, rób coś"
- tu jest szansa, że kiedyś się pętla skończy

Pozdrawiam.
Kicok
http://rafb.net/p/n1Ulr250.html

Bociana dziobał szpak, a potem była zmiana i szpak dziobał bociana.




PS. Sorka, że nie wklejam kodu tutaj, ale mam problemy z internetem i nie jestem wysłać na raz niczego ponad 2kB :/
Cysiaczek
Fakt. Masz rację. Rzeczywiście obie pętle działają identycznie - nie wiem co mi się ubzdurało : >

Pozdrawiam.
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.