Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] while w while, czyli pętla w pętli
simperium
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 5
Dołączył: 3.03.2004

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


Witam, mam taki problem:

czy można w jednym while zastosować drugie while?

tzn:

mam tak:

Kod
$liczba=0;
while ($liczba <3)   #while_pierwszy
     {
      $cośtam # tu następuje parę komend + ta
    
       $licznik=0;
    
      while ($licznik <3) # While_drugi
           {echo tratatat;  
           $licznik++;}
     $liczba++;
                 }


Czy można zrobić tak, by kod uzyskiwał taki efekt, by while_pierwszy zatrzymywał się na drugim, aż ten cały się popętli, po czym wracał do pierwszego, czyli by efekt był taki:

$liczba=0, $licznik=0
$liczba=0, $licznik=1
$liczba=0, $licznik=2

$liczba=1, $licznik=0
$liczba=1, $licznik=1
$liczba=1, $licznik=2

$liczba=2, $licznik=0
$liczba=2, $licznik=1
$liczba=2, $licznik=2

?

Pozdrawiam

Ten post edytował simperium 26.02.2009, 15:10:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




dając pętle1 w petli2 na każdy jeden przelot pętli2 przypadną wszystkie przeloty z pętli1.
Go to the top of the page
+Quote Post
Marr
post
Post #3





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

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


a złożoność rośnie wykładniczo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
simperium
post
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 5
Dołączył: 3.03.2004

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


znaczy się na odwrót wszystko machnąć,
Znaczy się: pętla druga powinna być nad pętlą pierwszą?
Go to the top of the page
+Quote Post
pEbE
post
Post #5





Grupa: Zarejestrowani
Postów: 106
Pomógł: 3
Dołączył: 21.03.2006
Skąd: Sosnowiec

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


Cytat(simperium @ 26.02.2009, 15:20:37 ) *
znaczy się na odwrót wszystko machnąć,
Znaczy się: pętla druga powinna być nad pętlą pierwszą?

Nie, jaka bedziesz mial roznice w tym : ) Skoro w pierwszej pętli masz pętlę drugą to musi się ona wykonać, aby pętla pierwsza mogła iść dalej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

a co do tych licznikow to na moj gust zrob takie cos:

  1. <?php
  2. $liczba = 0;
  3. $licznik = 0;
  4. while( warunek1 )
  5. {
  6.  
  7.  $liczba++;
  8.  // echo $liczba
  9.  
  10.  while( warunek2 ){    
  11.     $licznik++;
  12.     // echo $licznik;
  13.  }
  14.  
  15. }
  16. ?>


Ten post edytował pEbE 26.02.2009, 15:43:30
Go to the top of the page
+Quote Post
simperium
post
Post #6





Grupa: Zarejestrowani
Postów: 157
Pomógł: 5
Dołączył: 3.03.2004

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


niestety, gdy stosuję tę pętlę wynik wychodzi taki:

liczba =1 licznik=1
liczba =2 licznik=1
liczba =3 licznik=1

a miało być tak:

liczba=1 licznik=1
licznik=2
licznik=3

liczba=2 licznik=1
licznik=2
licznik=3

itd...
Go to the top of the page
+Quote Post
maziak
post
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


Zamien w takim to przypadku "liczbe" z "licznikiem"?

Poza tym, jezeli nie wyzerujesz tego co liczy w 2 petli to bedzie o jeden "za duze", tymsamym druga petla przestanie sie wykonywac juz po pierwszej iteracji petli nadrzednej. Generalnie zamierzony wynik z w/w posta mozna uzyskac tak :
  1. <?php
  2. $x = 0;
  3.  
  4.  
  5. while ($x<=3) {
  6. echo 'x='.$x;
  7. $x++;
  8.  
  9. $y=0;
  10.        while($y<=3) {
  11.        echo 'y='.$y.'<br>';
  12.        $y++;
  13.        }
  14. }
  15. ?>



Kod
x=0y=0
y=1
y=2
y=3
x=1y=0
y=1
y=2
y=3
x=2y=0
y=1
y=2
y=3
x=3y=0
y=1
y=2
y=3


Ten post edytował maziak 26.02.2009, 16:46:49
Go to the top of the page
+Quote Post
simperium
post
Post #8





Grupa: Zarejestrowani
Postów: 157
Pomógł: 5
Dołączył: 3.03.2004

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


Po długich testach okazało się... że działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Dziękuję.
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: 23.12.2025 - 18:54