Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pętla - komórka tablicy
Forum PHP.pl > Forum > Przedszkole
kuba_pilach
Witam,
Mam kolejny problem.
W jednym elemencie tablicy, pod nazwą $frachty[2] mam następujący ciąg:
Kod
00004 Koszty frachtu (patrz zał.);    
0070165878;  ;  / 01.09.2011;    
7000265046;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.719,41;    
5.719,41;  ;  1.315,46;  ;  7.034,87;    
00005 Koszty frachtu (patrz zał.);    
0070166091;  ;  / 02.09.2011;    
7000265063;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.222,95;    
5.222,95;  ;  1.201,28;  ;  6.424,23;    
00006 Koszty frachtu (patrz zał.);    
0070166092;  ;  / 02.09.2011;    
7000265069;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  6.466,51;    
6.466,51;  ;  1.487,30;  ;  7.953,81;    
00007 Koszty frachtu (patrz zał.);    
0070166094;  ;  / 02.09.2011;    
7000265074;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.720,38;    
5.720,38;  ;  1.315,69;  ;  7.036,07;    
00008 Koszty frachtu (patrz zał.);    
0070166096;  ;  / 06.09.2011;    
7000265084;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.298,93;    
5.298,93;  ;  1.218,75;  ;  6.517,68;    
00009 Koszty frachtu (patrz zał.);    
0070166099;  ;  / 01.09.2011;    
7000265120;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.228,75;    
5.228,75;  ;  1.202,61;  ;  6.431,36;    
00010 Koszty frachtu (patrz zał.);    
0070166737;  ;  / 01.09.2011;    
7000265953;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.470,74;    
5.470,74;  ;  1.258,27;  ;  6.729,01;


Takie coś:
Kod
00010 Koszty frachtu (patrz zał.);    
0070166737;  ;  / 01.09.2011;    
7000265953;  ;  / 00020;    
1;  ;  JD;  ;  V7 (23%);  ;  5.470,74;    
5.470,74;  ;  1.258,27;  ;  6.729,01;

To jeden fracht. Takich, mogą być 300, a może ich być 200.
I potrzebuję z każdego frachtu, wykonywać operację. Wyciągać dane z frachtu inaczej.
Zawsze fracht, ma 5 linii... Nie wiem jak to zrobić, dlatego proszę was o pomoc.

A że nikt nie odpowiada, musze zadać pytanie, czy jest to wogule możliwe? closedeyes.gif
czychacz
otwórz plik za pomocą
  1. file('nazwa_pliku');

w returnie dostajesz tablicę zawierającą poszczególne linie tekstu.
i jedziesz po nim jakimś for'em, sprawdzając najpierw, czy ma odpowiednią ilość linii.
przy każdej iteracji przetwarzasz odpowiednio dane.

więcej nie powiem, bo sam za mało powiedziałeś tongue.gif
kuba_pilach
Mam cały tekst w zmiennej. Jednej zmiennej wszystkie frachty. Umiem odczytywać z pliku, ale coż, pętle potrafią mi sprawiać niekiedy problemy... Powtarzam się: w jednej zmiennej mam wszyyystkie frachty. Ale nie zawsze jest ich taka sama ilość...
czychacz
eh... dobra:
  1. $arr = file('plik.txt');
  2. if($arr % 5 != 0) die('Niepoprawna ilość linii');
  3. for($i = 0; $i < count($arr) / 5; $i ++){
  4. //tutaj przetwarzasz wszystko
  5. //do linii pierwszej dostajesz się przez ($i * 5)
  6. //do drugiej dostajesz się przez ($i * 5 + 1)
  7. //do trzeciej: ($i * 5 + 2)
  8. }
kuba_pilach
Do drugiej jak się dostanę? Znaczy, jeśli chcę pierwszą linijkę frachtu wypisać, to jak to uczynię?
czychacz
jeśli chcesz połączyć 5 linijek, to wpisujesz:
  1. $str = '';
  2. for($j = 0; $j < 5; $j++)
  3. $str .= $arr[$i * 5 + $j];

ewentualnie, jakby entery poucinało (chociaż nie wiem, czy powinno), to zmieniasz to na:
  1. $str = '';
  2. for($j = 0; $j < 5; $j++)
  3. $str .= $arr[$i * 5 + $j]."\n";


//edit: daję samo NEXTLINE, bo nie wszystkie systemy używają RETURN + NEXTLINE
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.