Nyt olisi vuorossa ensimmäinen silmukka lause eli while.
Silmukkalause?
Tällä tarkoitetaan sitä, että yhtä koodin lohkoa suoritetaan niin kauan kunnes sen toteuttava ehto on tosi.
<?php
while(//Tähän tulee ehto kuten if lauseessa){ // Tästä merkistä
//alkaa lohko.
//Tässä olevaa ohjelma koodia suoritetaan niin kauan uudestaan,
//kun while palauttaa arvon 1 tai true siihen määrättyyn ehtoon.
}// Tähän lohko päättyy.
// Jos koodissa päädytään tähän on while saanut arvokseen 0,tai
//falsen jolloin lohkoa ei enään toisteta.
?>
Whilen yleinenkäyttö.
<?php
$i = 0;
while($i < 10){
echo "*";
$i++;
}
echp "plop";
?>
Tämä koodi tulostaa 10 kertaa merkin *. Eli alussa $i muuttuja alustetaan 0:ksi. whilessä verrataan muuttuja $i arvoa lukuun 10 loogisellaoperaattorilla, joka tässä tapauksessa on pienempi kuin 10. Eli while on totta eli true niin kauan, kun muuttuja $i on pienempi kuin luku 10. Kun $i saa arvokseen 10 while saa arvon epätosi, jolloin lohkon toistaminen lopetetaan, ja tulostetaan "plop".
Silmukkalauseille on myös erinäisä käskyjä, jolla saadaan silmukan suoritukseen muutoksia muilla ehdoilla, kuin silmukkaan annetuissa.
<?php
$i = 0;
while(true){
if ($i < 10){
echo "*";
}elseif($i == 5){
$i++;
continue;
}elseif($i == 10){
echo "plop";
}else{
break;
}
$i++;
}
?>
Tässä laitoimme silmukan sisään yksinkertaisen elseif lauseen. Näin saadaan if lauseeseen toisto ominaisuus. Toisin kuin aikaisemmassa esimerkissä, tässä if lause määrää sen mitä silmukka tekee. Whilellä on arvona true, joka tarkoittaa sitä, että se on ikuinen silmukka, sen arvo on aina totta. If lauseeseen on laitettu continue ja break komennot. Ne ovat nimensä mukaisia, eli continue hyppää suoraan siitä kohdasta missä se on, takaisin silmukan alkuun, break taasen rikkoo silmukan eli sen suoritus loppuu.
Näillä toiminnoilla scripti tulostaa ensin 4 tähteä 5 tähden se hyppää yli ja tulostaa 4 tähteä lisää ja lopuksi tämä tulostaa "plop" kun $i on 10. Tämän jälkeen if lause antaa pakosti elsen koska if eivät määrittele muuta toteutumis vaihtoehtoa, jolloin while saa break komennon ja sen suoritus loppuu.
do lause on pieni variaatio whilestä.
<?php
do{// Lohkon alku
}while(); //Ehto tänne
?>
Do toimii muuten samalla tavalla kuin while, mutta tällä saadaan aikan se, että lohkon sisältö tulostetaan aina varmasti edes kerran. Eli yksinkertaisemmin toteutus ehto tarkistetaan aina vasta silmukan lopussa.
-KoLja 27.11.2006


