Dvanáctý díl o PHP – cykly

Dnes se podíváme na cykly, neboli smyčky. Příkazy cyklů jsou v každém programovacím jazyce a jsou velmi důležité, dalo by se říci, že jsou asi nejdůležitější. Cyklus je něco, co se opakuje, v reálném světě například dny, týdny, měsíce. Cykly si budeme ukazovat dva, ten první který se opakuje do té doby, dokud se nedostane na určitou podmínku (ano může jít i do nekonečna, bohužel v takové chvíli se program „zasekne“), jedná se o cyklus WHILE a nebo cyklus, který lze trochu lépe řídit a nastavit mu třeba počet opakování, tedy cyklus FOR.

Cyklus FOR

Ve webových stránkách se velmi často setkáváme s cykly a ani o tom nevíme, typický představitelem cyklu jsou tabulky. Možná také patříte k té generaci, která ve třetí třídě dostala tabulku s malou násobilkou (viz. obrázek), čísla co jsme chtěli násobit jsme našli nejprve vpravo a poté nahoře, a poté sjeli prsty do míst kde se protínaly a měli výsledek. Vedle obrázku najdete, jak něco takového vytvořit pomocí cyklu. Možná si právě teď řeknete, že je to neuvěřitelně složité, ale nebojte, hned Vám to vysvětlím ;)

 

   <?php$b = 11;

echo „<table border=\“1\“>“;

for($a=1;$a<$b;$a++){

echo „<tr>“;

for($c=1;$c<$b;$c++){

echo „<td>“ . $c * $a . „</td>“;

}

echo „</tr>“;

}

echo „</table>“;

?>

Nyní si kód trochu rozebereme, jedná se o cyklus FOR, tedy každý FOR má předem nastaven počet opakování se a zapisuje se:

for($promenná = číslo_kde_bude_začínat ; $promenná < $maximální_hodnota ; $o_kolik_se_promenná_má_zvyšít) { OBSAH CYKLU  }

První proměnná je tedy číslo, na kterém to vše začíná, v druhém místě je že pokud je proměnná menší než druhá proměnná, cyklus se bude vykonávat tak dlouho, dokud nebude rovná a nebo vyšší a ve třetím místě je, o kolik se má první proměnná zvýšit.

To, co je obsaženo v cyklu se bude pořád a dokola opakovat, dokud cyklus neskončí, tedy pokud to cyklu dáte vypsat text „AHOJ“ a cyklus se bude opakovat 10x, budete mít na stránce vypsáno 10x za sebou AHOJ.

For je tedy cyklus s parametrem, na rozdíl od cyklu WHILE, který je s podmínkou je u něj jasné, kolikrát se bude opakovat.

Cyklus WHILE

Jak jsem již zmínil, cyklus WHILE je s podmínkou a není u něj jasné, kdy skončí, má tedy trochu jiné využití než předchozí cyklus, například načítání obsahu databáze, kdy třeba nevíme, kolik dat potřebujeme načíst a tak načítáme vše, dokud tam něco je, další kde se dá WHILE použít je načítání obsahu souboru, kdy nevíme, kolik obsahuje řádku a tak načítáme do té doby, dokud se nedostaneme na EOF (End Of File).

Nicméně načítat soubory ani obsah databáze zatím neumíme a tak předchozí příklad ve kterém jsme si vytvořili tabulku pro třeťáky přepíšeme do cyklu WHILE a to takto:

<?php

$b = 10;

echo „<table border=\“1\“>“;

$a = 0;

while($a<$b){

$a++;

echo„<tr>“;

$c = 0;

while($c<$b){

$c++;

echo„<td>“ . $c * $a . „</td>“;

}

echo„</tr>“;

}

echo„</table>“;

?>

Příklad možná vypadá složitě, popravdě, nezvolil jsem úplně nejjednodušší příklad, nicméně takto by to dopadlo, pokud bychom chtěli to samé v cyklu WHILE, co je důležité a na co nesmíme zapomenou na rozdíl od cyklu FOR je to, že než znovu začne vnitřní cyklus, je potřeba jeho proměnnou vrátit zpět na 0, protože jinak se Vám nevykoná.

K cyklu WHILE se vrátíme ještě až budeme probírat databáze.

Cyklus DO

Krom cyklu WHILE a FOR existuje ještě cyklus DO, ten je asi nejsložitější a sám sem jej nikdy nepoužil. Cyklus do testuje podmínku až na konci cyklu, na rozdíl od těch druhých, které otestují podmínku a pokud sedí cyklus teprve provedou, cyklus DO nejprve cyklus provede a pak až teprve jej testuje, zápis by tedy mohl být něco jako:

<?php

$i = 0;

do {

echo„číslo „. $i . „\n“;

$i++;

} while ($i < 3);

?>

 

BREAK a CONTINUE

Čas od času se nám stane, že nepotřebujeme, aby cyklus probíhal celý, pokud znovu vezmeme naší tabulku a řekneme si, že nechceme, aby se v ní vypsali čísla vyšší než 50, použijeme pro to break:

 

   <?php$b = 11;

echo „<table border=\“1\“>“;

for($a=1;$a<$b;$a++){

echo „<tr>“;

for($c=1;$c<$b;$c++){

if($c * $a>49) break;

echo „<td>“ . $c * $a . „</td>“;

}

echo „</tr>“;

}

echo „</table>“;

?>

Jak se z příkladu můžete všimnout, je tam dána podmínka, ve které, pokud by došlo, že dojde k vypsání čísla vyššího než 49, tak to break zastaví a číslo se nevypíše. Break ukončuje jen smyčku, ve které je, tedy pouze tu vnitřní, né vnější, protože ta pokračuje dále.

Příkaz continue neukončí vypisování smyčky, jen přeskočí zbytek těla a začne provádět další průchod smyčkou.

„Líbil se Vám tento článek? Sdílejte ho prosím na sociálních sítích, ať se o něm dozvědí i Vaši kamarádi. Děkuji!“
Share on FacebookShare on Google+Tweet about this on TwitterShare on TumblrEmail this to someone