Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z pętlą for i if
desavil
post
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Mam problem z małym skryptem odnośnie pętli:
  1. for($i4 = 1; $i < 100; $i4++){
  2. $i+=1;
  3. if(($i % 4) == 0 || $i == 1){ $i2+=1; echo 'START<br />'; }
  4.  
  5. echo $i.'<br />';
  6. if(($i % 3) == 0){ echo 'KONIEC<br />'; }
  7. }


Wynik jaki otrzymuję to - na początku jest dobrze, później zaczyna się sypać:
Kod
START
1
2
3
KONIEC
START
4
5
6
KONIEC
7
START
8
9
KONIEC
10
11
START
12
KONIEC
13
14
15
KONIEC
START
16
17
18
KONIEC


Chciałbym otrzymać wynik:
Kod
START
1
2
3
KONIEC
START
4
5
6
KONIEC
START
7
8
9
KONIEC
START
10
11
12
KONIEC

Męczę się już z tym parę godzin i nie umiem tego wykombinować.
Bardzo liczę na pomoc.

Ten post edytował desavil 28.03.2012, 11:48:30


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Napisz co chcesz dokładnie uzyskać. Co ma robić ten kod wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
desavil
post
Post #3





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Chciałbym uzyskać wynik taki jak napisałem w drugim cytacie smile.gif

Wymyśliłem coś takiego:
  1. for($i4 = 0; $i4 < 100; $i4++){
  2.  
  3. if(($i4 % 3) == 0){ echo ' START <br />'; }
  4. echo $i4.'<br />';
  5. if($i4 == 2 || $i4 == 5 || $i4 == 8 || $i4 == 11 || $i4 == 14){ echo 'KONIEC<br />'; }
  6.  
  7. }

Tylko jak zrobić, ten warunek: ($i4 == 2 || $i4 == 5 || $i4 == 8 || $i4 == 11 || $i4 == 14), żeby był automatycznie taki.
Bez użycia dodatkowej pętli itp.

Ten post edytował desavil 28.03.2012, 12:05:38


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


  1. echo 'START<br />';
  2. for($i = 1; $i < 100; $i++){
  3.  
  4. echo $i .'<br />';
  5. if (($i % 3) == 0)
  6. echo 'KONIEC<br />START<br />';
  7.  
  8. }


--------------------
Go to the top of the page
+Quote Post
desavil
post
Post #5





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Zanim coś napiszesz, to to przetestuj smile.gif


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


  1. echo 'START<br />';
  2. $max = 100;
  3. for($i = 1; $i < $max; $i++){
  4. echo $i .'<br />';
  5. if (($i % 3) == 0) {
  6. echo 'KONIEC<br />';
  7. if ($i < $max -1)
  8. echo 'START<br />';
  9. }
  10. }


--------------------
Go to the top of the page
+Quote Post
desavil
post
Post #7





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Nie mogę mieć 2x start.
Podałem przykład mojego kodu jak to ma wyglądać, tak to nie może być ponieważ to będzie zintegrowane z bazą danych pobieraniem rekordów w odpowiedni sposób itp.

Ten post edytował desavil 28.03.2012, 12:13:11


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
markonix
post
Post #8





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(desavil @ 28.03.2012, 13:10:52 ) *
Zanim coś napiszesz, to to przetestuj smile.gif

Ee?
Cytat
START
1
2
3
KONIEC
START
4
5
6
KONIEC
START
7
8
9
KONIEC

Wynik dokładnie jaki chciałeś jedynie niepotrzebny "START" na końcu, który już mogłeś się wykazać i sam uwarunkować.


--------------------
Go to the top of the page
+Quote Post
desavil
post
Post #9





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Ale przed pętlą podajesz start. A ja nie mogę przed pętlą tego podać tylko w pętli i tylko raz nie kilkakrotnie jak to zrobiłeś: przed i w pętli.

Ten post edytował desavil 28.03.2012, 12:15:27


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Sephirus
post
Post #10





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. $max = 100;
  2. $j = 0;
  3. $co_ile = 3;
  4. for($i = 1; $i < $max; $i++)
  5. {
  6. echo $j == 0 ? 'START<br/>' : '';
  7. echo $i.'<br/>';
  8. echo $j == $co_ile-1 ? 'KONIEC<br/>' : '';
  9.  
  10. $j = $j < $co_ile-1 ? $j+1 : 0;
  11. }


EDIT: poprawiłem mały błąd.

Ten post edytował Sephirus 28.03.2012, 12:22:25


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
desavil
post
Post #11





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

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


Idealnie smile.gif
A można to jeszcze przerobić, tak jeżeli pętla wykona się np. 8 razy to na końcu będzie również napis: KONIEC?

Ten post edytował desavil 28.03.2012, 12:23:31


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Sephirus
post
Post #12





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. $max = 100;
  2. $j = 0;
  3. $co_ile = 3;
  4. for($i = 1; $i < $max; $i++)
  5. {
  6. echo $j == 0 ? 'START<br/>' : '';
  7. echo $i.'<br/>';
  8. echo $j == $co_ile-1 || ($j != $co_ile-1 && $i == $max-1) ? 'KONIEC<br/>' : '';
  9.  
  10. $j = $j < $co_ile-1 ? $j+1 : 0;
  11. }


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Rysh
post
Post #13





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Trochę prostrza metoda:
  1. for($i = 1 ; $i < 100 ; $i) {
  2. for($z = 1 ; $z <= 3 ; $z++, $i++) {
  3. if($z == 1) { echo 'START<br />'; }
  4. echo $i .'<br />';
  5. if($z == 3) { echo 'STOP<br />'; }
  6. }
  7. }

Wystarczy w 2 pętli sobie zmienić 3 na 8, czy co tam chcesz smile.gif

Ten post edytował Rysh 28.03.2012, 20:54:10


--------------------
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 Aktualny czas: 20.08.2025 - 10:29