Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozdzielanie wyrażeń
Forum PHP.pl > Forum > Przedszkole
Szymciosek
Witam,
czytam właśnie książeczkę, a tam takie coś:

  1. for ($i = 0, $j = 100; $i < 100, $j > 0; $i++, $j--)
  2. {
  3. echo $i . '<br />';
  4. echo $j . '<br />';
  5. }


Chodzi o składnię pętli for.
Gdzie to mogę wykorzystać w praktyce?
lobopol
Tam gdzie potrzebujesz chyba logiczne.
Szymciosek
No naprawdę? To ja akurat wiem, ale może jakiś przykład wykorzystania tego?
sowiq
Najprostszy przypadek - chcesz narysować wszystkie kombinacje prostokątów o długościach boków w przedziale 1 - 100px.

Mnie zastanawia coś innego. Jeszcze nigdy nie spotkałem się z łączeniem warunków przez przecinek: $i < 100, $j > 0. IMO lepiej (czytelniej) byłoby zapisać go w ten sposób: $i < 100 && $j > 0.
Szymciosek
W sumie chyba kwestia programisty, ale racja, wychodzi na to samo jeśli chodzi o środkową część składni (warunki).
PrinceOfPersia
hmm... odpaliłem to i wychodzi jednak inaczej, w zależności czy da się && czy ,

Wychodzi na to, że tak jak w niektórych innych językach (chociażby w C czy JavaScript) ewaluowana jest wtedy ostatnia wartość po przecinku (w zasadzie ewaluowane są wszystkie, tylko ostatnia się liczy), czyli że ostatnie wyrażenie $j > 0 unieważnia wszystkie inne.
wg manuala:
Cytat
Each of the expressions can be empty or contain multiple expressions separated by commas. In expr2, all expressions separated by a comma are evaluated but the result is taken from the last part.

http://www.php.net/manual/en/control-structures.for.php

I faktycznie - wywalam $i < 100, zostawiam samo $j > 0 i na to samo wychodzi. Tak jakby tego pierwszego warunku nie było:
  1. for ($i = 0, $j = 100; /*$i < 100, */ $j > 0; $i++, $j--)
Szymciosek
No masz rację, tak jakby pierwszy z warunków nie był brany pod uwagę:

  1. for ($i = 0, $j = 10; $i < 3, $j > -10; $i++, $j--)
  2. {
  3. echo $i . ' -> I <br />';
  4. echo $j . ' -> J <br />';
  5. }


Kod
0 -> I
10 -> J
1 -> I
9 -> J
2 -> I
8 -> J
3 -> I
7 -> J
4 -> I
6 -> J
5 -> I
5 -> J
6 -> I
4 -> J
7 -> I
3 -> J
8 -> I
2 -> J
9 -> I
1 -> J
10 -> I
0 -> J
11 -> I
-1 -> J
12 -> I
-2 -> J
13 -> I
-3 -> J
14 -> I
-4 -> J
15 -> I
-5 -> J
16 -> I
-6 -> J
17 -> I
-7 -> J
18 -> I
-8 -> J
19 -> I
-9 -> J


Wychodzi na to, że skrypt się wykonuje dopóki nie zostanie spełniony drugi warunek.
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.