Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zczytanie pliku tekstowego do tablic
Forum PHP.pl > Forum > Przedszkole
axeld333
Mecze sie z tym i nie wiem jak to zrobic.

mam plik tekstowy w postaci:

1;adam;33;54567678
2;basia;14;44556677
3;waldek;54;99898787
itd.

chcialbym aby php mi go powrzucal do kolejnych tablic czyli:

$numer[1]="1"; $imie[1]="adam"; $wiek[1]=33; $tel[1]="54567678";
$numer[2]="2"; $imie[2]="basia"; $wiek[2]=14; $tel[2]="44556677";
itd...

jak to zrobic? z gory dzieki.
siemakuba
Straszliwa niechęć do manuala wystąpiła u ciebie. Ehh.
file" title="Zobacz w manualu PHP" target="_manual + explode" title="Zobacz w manualu PHP" target="_manual
może nawet fgetcsv" title="Zobacz w manualu PHP" target="_manual

pozdr.
axeld333
Niby wszystko zrozumialem, ale mi nie dziala i nie wiem czemu.
Plik w postaci:

AGO;19990423;49,40;51,00;49,10;49,70;164435
AGO;19990426;49,50;49,80;49,00;49,00;90323
AGO;19990427;48,50;48,50;47,50;47,80;84823
AGO;19990428;47,50;47,50;46,00;46,20;51058
AGO;19990429;45,90;46,80;45,50;46,00;62820
AGO;19990430;45,90;46,70;45,90;46,40;51295

petla:

  1. <?php
  2. $plik = fopen("agora.txt","r");
  3. $odczytany = fread($plik, 1000000);
  4.  
  5. $dane = explode("rn",$odczytany);
  6.  
  7. foreach ($dane as $linijka) 
  8.  {
  9. echo $linijka."<br>";
  10. list($nazwa_spolki, $data, $otwarcie, $maksimum, $minimum, $zamkniecie, $volumin) = explode(";", $linijka);
  11.  }
  12.  
  13.  
  14. for ($i=1; $i<10; $i++)
  15. {
  16. echo "@".$nazwa_spolki[$i].$data[$i].$otwarcie[$i]."<br>";
  17. }
  18. ?>



petla foreach dobrze wyswietla nikijki z pliku, a petla u dolu juz nic nie wyswietla - tak jakby zmienne nie zaladowaly sie do tych tablic.
Dlaczego?
siemakuba
Wszystko działa jak powinno ;)
Zobacz jak wygląda twoja pętla, i co dokładnie dzieje się w środku:
  1. <?php
  2. foreach ($dane as $linijka) 
  3. {
  4. list($nazwa_spolki, $data, $otwarcie, $maksimum, $minimum, $zamkniecie, $volumin) = explode(';', $linijka);
  5. }
  6. ?>
Za każdą iteracją pętli nadpisujesz wszystkie te zmienne nowymi danymi. Stąd, nie są one tablicami.
Jeżeli chcesz zbudować z tego wiele tablic, może spróbuj tak:
  1. <?php
  2. $nazwa_spolki = array();
  3. $data = array();
  4. foreach ($dane as $linijka) 
  5. {
  6. $tmp_array = explode(";", $linijka);
  7. $nazwa_spolki[] = $tmp_array[0];
  8. $data[] = $tmp_array[1];
  9. }
  10. ?>


pozdr.
axeld333
dzieki - teraz dziala - po prostu nie zrozumialem tej instrukcji "list" - myslalem ze ona mi sama to zrobi.
ale jeszcze tylko jedno pytanie:
jak dowiedziec sie ile jest linijek tekstu?
siemakuba
Kurcze, przechodzisz samego siebie :) Jak cię naprowadzić to łapiesz bez problemu w czym rzecz, ale masz jakąś wyraźną niechęć do poszukiwań :)

Dane z pliku masz w tablicy. Każdy element tablicy = jedna linia z pliku. Szukaj funkcji, która zwróci ci (policzy) ilość elementów w tablicy ;)

pozdr.
kriqs
a no list ci to zrobi smile.gif
  1. <?php
  2. $dane = file('agora.txt');
  3.  
  4. foreach ($dane as $linijka) 
  5.  {
  6. echo $linijka."<br>";
  7. list($nazwa_spolki[], $data[], $otwarcie[], $maksimum[], $minimum[], $zamkniecie[], $volumin[]) = explode(";", $linijka);
  8.  }
  9.  
  10.  
  11. for ($i=0; $i<10; $i++)
  12. {
  13. echo "@".$nazwa_spolki[$i].$data[$i].$otwarcie[$i]."<br>";
  14. }
  15. ?>


powinno dzialac smile.gif

dziekuje smile.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.