Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zagnieżdżone pętlę while
knet4
post 12.06.2015, 15:48:44
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 12.06.2015

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


Witam,

Mam problem z wykonywaniem pętli w skrypcie:
  1. <?php
  2. header('Content-type: text/html;charset=utf-8');
  3. $uchwyt = fopen ("plik.csv","r");
  4. $stacjo = fopen ("export.csv","r");
  5. echo '<table border="0" width="500">';
  6. echo '<tr align="center" bgcolor="#DDDDDD">'.'<td width="200">'."Centrum".'</tr>'.'<br>';
  7. echo '</table>';
  8. echo '<table border="0" width="500" >';
  9. $a=1;
  10. $b=2;
  11. while (($data2 = fgetcsv($stacjo, 1000, ";")) !== FALSE)
  12. {
  13. echo 'petla1 '.$a.'<br />';
  14. $a++;
  15. while (($data = fgetcsv($uchwyt, 1000, ";")) !== FALSE)
  16. {
  17. echo 'petla2 '.$b.'<br />';
  18. $b++;
  19. if($data[2]== "Hurt.H01")
  20. {
  21. if($data2[9]== $data[9])
  22. {
  23. echo '<tr align="center" bgcolor="#DDDDDD">'.'<td width="200">'.$data[9].'<td width="100">'.$data2[10].'<td width="100">'.$data[10].'</td>'.'</td>'.'</td>'.'</tr>';
  24. echo '<tr align="center" bgcolor="silver">'.'<td width="200">'.'<td width="100">'.'<td width="100">'.'</td>'.'</td>'.'</td>'.'</tr>';
  25. }
  26. else
  27. {
  28. echo '<tr align="center" bgcolor="#DDDDDD">'.'<td width="200">'.$data[9].'<td width="100">'.$data2[5].'<td width="100">'.$data[10].'</td>'.'</td>'.'</td>'.'</tr>';
  29. echo '<tr align="center" bgcolor="silver">'.'<td width="200">'.'<td width="100">'.'<td width="100">'.'</td>'.'</td>'.'</td>'.'</tr>';
  30. }
  31.  
  32. }
  33.  
  34. }
  35.  
  36. }
  37. echo '</table>'.'<br/>';
  38. ?>


Z tego co zauważyłem:
1. Wykonuje się pierwsza pętla while po po raz pierwszy.
2. Otwiera druga pętla która wykonuje się x razy, aż będzie spełniony warunek.
3. Po raz drugi wykonuje się pierwsza pętla, ale tym razem omija już 2 pętlę while - dlaczego?

Cytat
petla1 1
petla2 2
petla2 3
petla2 4
petla2 5
petla2 6
petla2 7
petla2 8
petla2 9
petla2 10
petla1 2
petla1 3
petla1 4
petla1 5
petla1 6
petla1 7
petla1 8
petla1 9
petla1 10
petla1 11
petla1 12
Go to the top of the page
+Quote Post
kreatiff
post 12.06.2015, 16:52:16
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Wskaźnik pliku dla $uchwyt po przejrzeniu całego pliku (czyli zagnieżdżonej pętli po raz pierwszy) znajduje się na jego końcu.
Trzeba go przewinąć przed każdą pętlą wykonywaną ponownie na tym samym uchwycie do pliku.
Wstaw przed drugą pętlę while rewind($uchwyt);

Ten post edytował kreatiff 12.06.2015, 16:53:14
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: 5.07.2025 - 09:43