Začínáme s PHP - while (13.díl)

Napsal Mgr.Radovan Kaluža (») 1. 9. 2004 v kategorii PHP/HTML, přečteno: 5971×

Pozor na nekonečný cyklus, je docela dlouhý :-)

Určitě již nastal případ, kdy chcete provádět část kódu dokud bude platit určitá podmínka. Potom cykly jsou řešením. Cyklů máme několik typů. Ukážeme si ty nejdůležitější.

While
Cykly while jsou nejjednodušším typem cyklů v PHP a zároveň i nejpoužívanějším. Cyklus je prováděn tak dlouho, dokud podmínka je splněna (TRUE), cyklus nemusí být proveden ani jednou. To vyplývá z předpokladu, že podmínka je testována ihned na začátku.

while (podminka) { prováděný_kód }

Příklad na výpočet faktoriálu. <?
$i=5;
$f=$i;
while ($i>1)
{
$f=$f*($i-1); // faktoriál čísla 5 = 5*4*3*2
$i=$i-1; // zmenší číslo i o jedničku
}

print $i."! = ".$f."<br>";

?>

Je důležité ověřit si, zda podmínka někdy nebude splněna a cyklus skončí, protože nekonečný cyklus by mohl trvat nekonečně (dokud Apache nebo OS neřekne stop :-)).

do-while
Cyklus do-while je velice podobný, jediný rozdíl je v tom, že cyklus musí být proveden aspoň jednou. Je to zapříčiněno tím, že podmínka se testuje až na konci skriptu.

do {prováděný_kód } while (podminka)

Níže uvedený kód napíše, slovo "ahoj" dvakrát. <?
$slovo="Ahoj";
$kolikrat=2;
do
{
print $slovo."<br>";
$kolikrat=$kolikrat-1;
}
while ($kolikrat>0);

?>

A i v případě, že by proměnná kolikrat byla menší než jedna, tak minimálně jednou to vypíše slovo ahoj (zdravit se musí). <?
$slovo="Ahoj";
$kolikrat=0;
do
{
print $slovo."<br>";
$kolikrat=$kolikrat-1;
}
while ($kolikrat>0);

?>

nekonečný cyklus
Pro odvážlivce uvádím nekonečný cyklus, na vlastní nebezpečí si jej spusťte, a budu rád, pokud někdo z vás přijde na chybu. <?
$i=5;
$j=5;

while ($j>1)
{
print $i;
$i=$i-1;
}

?>

Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Marsek z IP 94.242.126.*** | 3.6.2011 10:00
Jsem sice hodně velký začátečník,ale po chvilce jsem to vyřešil.
Chybí tam ještě příkaz,aby i $j zmenčil o 1.
Když ji totiš nesníží,tak se potom bude vždy podmínka splněna.
Tak by to mělo být smile

<?
$j=5;
$i=5;

while ($j>1)
{
print $i;
$i=$i-1;
$j=$j-1; 
}

?>
jan z IP 82.209.8.*** | 3.6.2011 10:10
Přesně tak díky, tomu že inkrement není nastaven se jedná opravdu o nekonečný cyklus, který bývá jednou z základních chyb při programování.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel devět a šest