Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pętlą
Forum PHP.pl > Forum > Przedszkole
mcfly
Witam,
oto fragment mojego kodu:
  1. <?php
  2. $wiadomosci=fopen(&#092;"wiad.txt\",\"r\");
  3. $dlugosc=filesize(&#092;"wiad.txt\");
  4. $ida=fgets($wiadomosci,$dlugosc);
  5. $pieces = explode (&#092;"|\", $ida);
  6.  
  7. for($a=0;$a<($ile_wiad);$a++) {
  8. echo ($pieces[$a+$b]);
  9. echo (&#092;"<br>\");
  10. echo ($pieces[($a+1+$b)]);
  11. echo (&#092;"<br>\");
  12. echo ($pieces[($a+2+$b)]);
  13. echo (&#092;"<br>\");
  14. echo ($pieces[($a+3+$b)]);
  15. echo (&#092;"<br>\");
  16. $b=$b+4;
  17. }
  18. fclose($wiadomosci);
  19. }
  20. ?>

Załóżmy, że plik wygląda tak :
Cos | Tresc | Autor | Obrazek | Cos1 | Tresc1 | Autor1 | Obrazek1 | Cos2 | Tresc2 | Autor2 | Obrazek2 | kup


Oto co wypisuje mi w IE :
Kod
Cos
Tresc
Autor
Obrazek
Tresc1
Autor1
Obrazek1
Cos2
Autor2
Obrazek2
ku


Dwa pytania " Dlaczego pomija frazy Cos1 i Tresc2 ( idac dalej Autor3 i Obrazek4) oraaz dlaczego wypisuje "ku" a nie kup .. i w sumie dlaczego wypisuje.. wydaje mi sie nie powinno za pomoc dziekuje z gory.
pozdrawiam

----------
zmoderowane
Prosze uzywac [php] do umieszczania kodu php
hwao
Bielo
Wytłumacz może po co Ci $b:).
Jeśli chcesz żeby wypisywał Ci po kolei elementy tablicy użyj foreach
  1. <?php
  2. $wiadomosci=fopen(&#092;"wiad.txt\",\"r\");
  3. $dlugosc=filesize(&#092;"wiad.txt\");
  4. $ida=fgets($wiadomosci,$dlugosc);
  5. $pieces = explode (&#092;"|\", $ida);
  6.  
  7. foreach($pieces as $piece) {
  8. echo($piece.&#092;"<br />\");
  9. }
  10.  
  11. ?>


a jeśli chcesz poprawić swój kod to masz coś takiego:
  1. <?php
  2.  
  3. $wiadomosci=fopen(&#092;"wiad.txt\",\"r\");
  4. $dlugosc=filesize(&#092;"wiad.txt\");
  5. $ida=fgets($wiadomosci,$dlugosc);
  6. $pieces = explode (&#092;"|\", $ida);
  7.  
  8. for($a=0;$a<($ile_wiad);$a++) {//pierwsze przejście $a==0^$b=0
  9. echo ($pieces[$a+$b]);//==$pieces[0]
  10. echo (&#092;"<br>\");
  11. echo ($pieces[($a+1+$b)]);//==$pieces[1]
  12. echo (&#092;"<br>\");
  13. echo ($pieces[($a+2+$b)]);//==$pieces[2]
  14. echo (&#092;"<br>\");
  15. echo ($pieces[($a+3+$b)]);//==$pieces[3]
  16. echo (&#092;"<br>\");
  17. $b=$b+4;//$b==4
  18. }
  19.  
  20. for($a=0;$a<($ile_wiad);$a++) {//drugie przejście $a==1^$b=4
  21. echo ($pieces[$a+$b]);//==$pieces[5]!!!!!
  22. .
  23. .
  24. .
  25.  
  26. ?>


jeśli chcesz żeby ten kod działał to zmień
$b=$b+4;
na
$b=$b+3;

A co do drugiego pytania to funkcja echo wysyła do przeglągarki tekst, więc przeglądarka go wypisuje.
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.