Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wczytanie danych z pliku *.txt do tablicy dwuwymiarowej.
foqz
post 3.12.2009, 14:41:24
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 14.01.2009

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


Witam,

nie wiem jak napisać skrypcik, który wczyta dane z pliku *.txt i zapisze je do tablicy dwuwymiarowej, na której później będę chciał przeprowadzać pewne działania matematyczne.




Ważne!

Format pliku tekstowego:

1  23 4 45

1  11 4 63

2  12 7 23

itd...

[czyli elementy tablicy oddzielone są znakiem spacji, a na końcu zapewne jest znak końca linii]


Proszę o pomoc, zainteresowanym dziękuję i pozdrawiam.

Ten post edytował foqz 3.12.2009, 14:42:48
Go to the top of the page
+Quote Post
thek
post 3.12.2009, 14:51:05
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




1. Zadeklaruj 2-wymiarową tablicę
2. Wczytaj linię z pliku
3. Każdą linię podziel na elementy, gdzie znakiem oddzielającym jest spacja
4. Zapisz tę tablice jako wiersz tablicy 2-wymiarowej
5. Wracaj do punktu 2 tak długo aż skończy Ci się plik.

To jest algorytm... Niemal każdy punkt to gotowa funkcja lub najwięcej 2 gotowe. Skrypt więc to tylko kilka linijek kodu i jest niezwykle prosty jeśli pomyślisz trochę.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
darko
post 3.12.2009, 14:56:31
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jeśli między liczbami jest jeden odstęp (spacja), to:
  1. $filename = "file.txt";
  2. $handle = fopen($filename, "r");
  3. $data = array();
  4. if ($handle) {
  5. while (!feof($handle)) {
  6. $buffer = fgets($handle, 4096);
  7. $data[]=explode(" ", $buffer);
  8. }
  9. fclose($handle);
  10. } else {
  11. die("Error opening a file $filename");
  12. }
  13. print_r($data);
  14. // zwróci: Array ( [0] => Array ( [0] => 1 [1] => 23 [2] => 4 [3] => 45 ) [1] => Array ( [0] => 1 [1] => 11 [2] => 4 [3] => 63 ) [2] => Array ( [0] => 2 [1] => 12 [2] => 7 [3] => 23 ) )



--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
tvister
post 3.12.2009, 15:13:03
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

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


Zakozaczę znajomością manual-a smile.gif
A jeżeli plik potraktować jako csv-auke to

  1. $tabl = array();
  2. $uchwyt = fopen ("test.csv","r");
  3. while (($data = fgetcsv($uchwyt, 1000, " ")) !== FALSE) {
  4. $tabl[] = $data;
  5. }
  6. fclose ($uchwyt);


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
darko
post 3.12.2009, 15:31:41
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat
Zakozaczę znajomością manual-a


hipokryta smile.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
foqz
post 3.12.2009, 15:40:42
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 14.01.2009

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


darko - dzięki, myślę, że Twoja pomoc będzie najbardziej użyteczna, 

tvister - przemyślę później,

thek - gratuluję poczucia humoru,




Pozdrawiam w.w.

Go to the top of the page
+Quote Post
thek
post 3.12.2009, 15:57:01
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




foqz... Mój algorytm to tylko wariacja kodu darko z użyciem funkcji file smile.gif potem explode na pętli foreach i wsio smile.gif ale skoro masz spacje to pomysł tvistera z gotową funkcja dla plików csv jest jeszcze lepszy niż mój smile.gif Kompletnie o niej zapomniałem bowiem. Za rzadko plików csv używam...


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 3.06.2025 - 18:04