Algoritmy s PHP

Ján Guniš, PF UPJŠ, Košice

 

Príkaz cyklu FOR

Ďalším z rady cyklov v PHP je cyklus FOR. Je o niečo komplikovanejší ako cykly while a do while, ale je aj výkonnejší. Bližšie už tabuľka.

    

Príklad príkazu FOR Vysvetlenie
for (výraz1; výraz2; výraz3) príkaz;
 
Pred začiatkom vykonávania cyklu FOR sa vyhodnotí výraz1. Potom sa vyhodnotí výraz2. Ak je jeho hodnota true (je pravdivý), vykoná sa telo cyklu, prikaz. Na konci každého prechodu telom cyklu sa vyhodnotí výraz3. Telo cyklu sa vykonáva tak dlho, pokiaľ je hodnota výrazu2 true.
for ($a=1; $a<=10; ++$a) echo $a;
                                        
Tento cyklus vypíše čísla od 1 do 10. Na začiatku vykonávania cyklu sa do premennej $a priradí 0. Potom sa vyhodnotí výraz $a<=10, vykoná sa príkaz echo a vyhodnotí sa výraz ++$a. A cyklus sa opakuje. Vyhodnotí sa $a<=10, vykoná sa príkaz echo a vyhodnotí sa výraz ++$a...
Cyklus skončí, keď hodnota $a bude väčšia ako 10. Takže po skončení cyklu je hodnota $a=11;
echo "<table border=1>\r";
for ($a=1; $a<=10; ++$a)
{
 echo "<tr>\r";
 for ($b=1; $b<=10; ++$b)
 {
  echo "<td>" . $a*$b . "</td>\r";
 }
 echo "</tr>\r";
}
echo "</table>\r";
Tento program vypíše malú násobilku, prehľadne zapísanú do tabuľky.
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
echo "<table border=1>\r";
echo "<tr>";
echo "<td>*</td>";
for ($a=1; $a<=10; ++$a):
 echo "<td>" .$a . "</td>";
endfor;
echo "</tr>";
for ($a=1; $a<=10; ++$a):
 echo "<tr>\r";
 echo "<td>".$a."</td>\r";
 for ($b=1; $b<=10; ++$b):
  echo "<td>" . $a*$b . "</td>\r";
 endfor;
 echo "</tr>\r";
endfor;
echo "</table>\r";
A opäť alternatívna (prehľadnejšia ) syntax príkazu FOR. Zátvorky {} sme nahradili ":" a slovíčkom endfor. Tentoraz je tabuľka prehľadnejšia. Obsahuje aj popis riadkov a stĺpcov.
*12345678910
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100

 

 Zvláštnosti:

V príkaze FOR môžeme vynechať ľubovoľný výraz. Ak vynecháme výraz2, považuje sa druhý výraz stále za pravdivý a dostaneme nekonečný cyklus. Aj nekonečný cyklus sa dá ukončiť, napr. príkazom break. Nasledujúci príklad vypíše čísla od 1 do 10.

for ($a=1;;++$a):
 echo $a;
 if ($a==10) break;
endfor;

Vo výrazoch môžeme použiť aj ",", čo nám umožní použiť viac výrazov. Nasledujúci príklad demonštruje inicializáciu dvoch premenných:

for ($a=1,$b=10;$a<10;$a++)

Ak použijeme čiarku v druhom výraze, ako podmienka pre ukončenie cyklu sa použije posledný výraz.