Structura de control
for este o structura repetitiva.
Arata astfel:
Pseudocod
for (expresie1;expresie2;expresie3)
bloc instructiuni;
La fel ca si in celelalte cazuri, daca in cadrul buclei
for vreau sa execut mai multe instructiuni, le grupez intr-un bloc de instructiuni folosind acolade.
Structura
for functioneaza astfel:
- expresie1 este evaluata o singura data, neconditionat, la inceputul primei bucle
- expresie2 este o conditie, o expresie evaluata boolean la inceputul fiecarei bucle
- expresie3 este evaluata/executata la sfarsitul fiecarei bucle
Se obisnuieste ca
expresie1 sa fie o initializare a unei variabile gen $i = 1,
expresie2 o conditie gen $i <10, iar expresie3 o incrementare, sau decrementare sau alta operatie aritmetica ce afecteaza variabila $i ($i++ sau $i+=3 , etc)
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?php
for ($i = 0; $i < 10; $i++) {
echo 'valoarea lui $i este: '."$i \n";
}
var_dump($i);
?> |
| 1
2
3
4
5
6
7
8
9
10
11
| valoarea lui $i este: 0
valoarea lui $i este: 1
valoarea lui $i este: 2
valoarea lui $i este: 3
valoarea lui $i este: 4
valoarea lui $i este: 5
valoarea lui $i este: 6
valoarea lui $i este: 7
valoarea lui $i este: 8
valoarea lui $i este: 9
int(10) |
|
expresie1,
expresie2 sau
expresie3 pot fi de fapt formate din mai multe expresii separate prin virgula.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
| <?php
for ($i = 0, $j= 9; $i + $j > 0; $i++, $j-=2) {
echo $i.' '.$j."\n";
}
?> |
| 1
2
3
4
5
6
7
8
9
| 0 9
1 7
2 5
3 3
4 1
5 -1
6 -3
7 -5
8 -7 |
|
Oricare din
expresie1,
expresie2 sau
expresie3 poate lipsi. Dar ramane separatorul ";" dintre cele 3 expresii. Daca
expresie2 lipseste, deci conditia ce este evaluata la inceputul fiecarei bucle, atunci
expresie2 este evaluata automat la TRUE. Dintr-o astfel de bucla se poate iesi doar cu
break.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <?php
for ($i = 0; ;$i++) {
if ($i > 9 ) {
break;
}
echo $i . ' ';
}
echo "\n\n";
for (; ;) {
$k++;
if ($k > 10) {
break;
}
echo $k.' ';
}
?> |
| 1
2
3
| 0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10 |
|