Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wczytanie danych z pliku *.txt do tablicy dwuwymiarowej.
foqz
post
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
 
Start new topic
Odpowiedzi (1 - 6)
thek
post
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ę.
Go to the top of the page
+Quote Post
darko
post
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 ) )

Go to the top of the page
+Quote Post
tvister
post
Post #4





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

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


Zakozaczę znajomością manual-a (IMG:style_emoticons/default/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);
Go to the top of the page
+Quote Post
darko
post
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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
foqz
post
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
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 (IMG:style_emoticons/default/smile.gif) potem explode na pętli foreach i wsio (IMG:style_emoticons/default/smile.gif) ale skoro masz spacje to pomysł tvistera z gotową funkcja dla plików csv jest jeszcze lepszy niż mój (IMG:style_emoticons/default/smile.gif) Kompletnie o niej zapomniałem bowiem. Za rzadko plików csv używam...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 17:50