Toistolause tarkoittaa jonkin tai joidenkin lauseiden toistamista. Toistolauseiden (silmukkarakenteet eli loopit) avulla
ohjelmalausetta toistetaan niin kauan kunnes tietty ehto on täytetty.
PHP:ssä on käytössä seuraavat toistolauseet: for, foreach, while ja do...while.
Toistolausetta for käytetään tilanteissa, joissa halutaan suorittaa jotakin tehtävää tietty kertamäärä.
for-komennon yleinen muoto:
for (alustus; toisto-ehto; päivitys){
lause tai lauseet;}
Toistolauseen for suluissa on kolme osaa:
Alustus on toiminto jolla silmukkaa ohjaava muuttuja alustetaan, eli asetaan "laskuriin" alkuarvo jota muutetaan päivityksen avulla.
Ehto on aina TOSI tai EPÄTOSI. Ehto-osan ollessa TOSI voidaan silmukan suoritusta jatkaa, ehto-osaa voidaan pitää myös
lopetusehtona.
Päivitys-osassa muutetaan alustus-osan muuttujan arvoa esim. lisätään silmukan laskuria.
Osista jokin tai kaikki voivat puuttua mutta puolipisteet on laitettava sulkujen sisälle.
for on aloitusehtoinen komento, joka tarkoittaa, että ehto testataan ennen silmukkaan menoa.
Esimerkki 1. Esimerkki näyttää numerot yhdestä kymmeneen:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
for ($kertaa = 0; $kertaa <= 10; $kertaa++) {
echo "Numero on: $kertaa <br> ";
}
?>
</body>
</html>
Tulos www-sivulla:
Toteuta for-toistolause joka näyttää numerot kymmenestä yhteen.
Esimerkki 2. Esimerkki näyttää numerot nolasta sataan kymmenen välein:
<div class="pun">
<?php
for ($luku = 0; $luku <= 100; $luku = $luku + 10) {
echo "Luku on: $luku <br>";
}
?>
</div>
Tulos www-sivulla:
Toteuta for-toistolause joka näyttää nollasta alkaen 50 välein 500 asti.
Esimerkki 3. Ohjelma jossa sijoitetaan yksiuloitteiseen taulukkoon 10 desimaalilukua ja tulostetaan annetut luvut taulukosta näytölle:
<div class="pun">
<?php
$luvut = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
$taulukoko = count($luvut);
for($rivi = 0; $rivi < $taulukoko; $rivi++) {
echo $luvut[$rivi];
echo "<br>";
}
?>
</div>
Tulos www-sivulla:
Toteuta for-toistolauseella taulukko-ohjelma, joka tulostaa suomenkielen aakkoset järjestyksessä.
Sisäkkäisellä for-lauseella voi käsitellä esim. kaksi-uloitteista taulukkoa.
Ulompi for-lause hoitaa rivin vaihtamisen ja sisempi for-lause tulostuksen riville, taulukon ollessa kyseessä tulostaisi
sarakkeissa olevan tiedon.
Esimerkki 4. Ohjelma tulostaa alaviivoja, ulompi for vaihtaa riviä ja sisempi for tulostaa alaviivat riville:
<div class="pun">
<?php
for ($rivi = 1; $rivi <= 10; $rivi++){
for ($sarake = 1; $sarake <= 10; $sarake++){
echo " _ ";
}
echo "<br>";
}
?>
</div>
Tulos www-sivulla:
Toteuta for-toistolauseilla taulukko-ohjelma joka tulostaa suomenkielen aakkoset järjestyksessä, 5 kirjainta
kirjainta riville välilöynnillä erotettuna.
Suuren taulukoiden sisällön esittämiseen www-sivuille on lyhin koodi saadaan käyttämällä for-lauseita.
Esimerkki 5. Tulostetaan taulukon sisältö sisäkkäisten for-lauseiden avulla.
<div class="pun">
<?php
$taulu = array(
array("1.rivi:","A","B","C","D","E"),
array("2.rivi:","F","G","H","I","J"),
array("3.rivi:","K","L","M","N","O"),
array("4.rivi:","P","Q","R","S","T"),
array("5.rivi:","U","V","W","Y","Y")
);
for ($rivi = 0; $rivi <= count($taulu); $rivi++) {
for ($sarake = 0; $sarake <= 6; $sarake++){
echo " ". $taulu[$rivi][$sarake] ." ";
}
echo "<br>";
}
?>
</div>
Tulos www-sivulla:
Muokkaa yllä olevasta esimerkistä 4 * 7 taulukko.
(4 riviä, 7 saraketta)
Sijoita taulukkoon seuraavat:
Nimi Koe 1 Koe 2 Koe 3 Koe 4 Yht. Arvosana Ykkönen Alli 30 40 50 60 0 0 Kakkonen Bertta 40 50 60 70 0 0 Kolmonen Carita 50 60 70 80 0 0Näytä taulukon sisältö for-lauseiden avulla.
Toistolause foreach tarjoaa helpon tavan toistaa taulukot.
Ainoastaan taulukot ja objektit toimivat foreach-rakenteen kanssa, yrittäessä käyttää sitä muun datan kanssa ohjelma antaa error-koodin.
Esimerkki 6. Yksi-uloitteisen taulukon näyttäminen www-sivulle:
<div class="pun">
<?php
$värit = array("Punainen", "Vihreä", "Sininen", "Keltainen");
foreach ($värit as $kaikki) {
echo "$kaikki <br>";
}
?>
</div>
Tulos www-sivulla:
Esimerkki 7. Objektissa ika on solujen niminä kolmen henkilön etunimet ja varsinaisena sisältönä henkilöiden iät.
Objektin sisältö järjestetään asort()-funktiolla ikäjärjestykseen nuorimmasta vanhimpaan sekä näytetään www-sivulle
järjestyksessä nimi ja ikä. Huomaa kuinka taulukon sisällön järjestys muuttui:
<div class="pun">
<?php
$ika = array("Arto"=>"24", "Esko"=>"21", "Heikki"=>"22");
asort($ika);
foreach($ika as $rivi => $rivi_alue) {
echo "Nimi - " . $rivi . ", Ikä - " . $rivi_alue;
echo "<br>";
}
?>
</div>
Tulos www-sivulla:
Kysymys: Mikä tieto on muuttujissa sarake ja sarake_alue ?
Toistolauseessa while "silmukan runkoa" suoritetaan niin kauan kuin ehto on tosi. Kun ehto tulee epätodeksi, ohjelman
suoritus siirtyy silmukkaa seuraavaan lauseeseen. while on alku-ehtoinen toistolause, eli ensin tutkitaan toteutuuko
ehto ennenkuin rakenteen sisään mennään.
while -lauseen yleinen muoto:
while (toisto-ehto) {
ohjelmalause;}
Esimerkki 8. Toistetaan viisi kertaa tekstin näyttäminen ja jokaisella kerralla näytetään numero muuttujassa oleva arvo:
<div class="pun">
<?php
$numero = 1;
while($numero <= 5) {
echo "Numero on: $numero <br>";
$numero++;
}
?>
</div>
Tulos www-sivulla:
Muuta esimerkin (yllä) while-silmukkarakenne, näyttämään numerot kymmenestä yhteen.
Toistolause do...while on samantyyppinen kuin while-silmukka. Toisotolauseen do...while ero while ja
for lauseisiin on, do..while on lopetusehtoinen. Lause do...while suoritetaan aina vähintään yhden kerran,
koska ehto testataan rakenteen lopussa eikä sen alussa.
Toistolause do...while yleinen muoto:
do {
ohjelmalause;} while (lopetus-ehto);
Esimerkki 9. Toistetaan viisi kertaa tekstin näyttäminen ja jokaisella kerralla näytetään numero muuttujassa oleva arvo:
<div class="pun">
<?php
$naula = 1;
do {
echo "Lyö $naula. naula, KOP! <br>";
$naula++;
} while ($naula <= 10);
?>
</div>
Tulos www-sivulla:
Esimerkki 10. Toistolause do...while näyttää yksi-uloitteisen taulukon:
<div class="pun">
<?php
$rivi = 0;
$valmistaja = array("Sony","Apple","Samsung","Huawei","Panasonic");
do {
echo $valmistaja[$rivi] . "<br>";
$rivi++;
} while ($rivi < 5);
?>
</div>
Tulos www-sivulla:
Siirry linkistä
Muuttujat-sivulle
ja kopioi PHP-esimerkki otsikon alta Taulukon solujen nimeäminen, objektit.
- Muuta taulukon solujen nimiksi kirjaimet A - F.
- Sijoita taulukon solujen sisällöksi etunimet, Anthony, Bertha, Cecilia, David, Edward ja Felicia.
Toteuta PHP-koodaus käyttäen do-while toisto lausetta seuraavasti:
- nimi-muuttujaan voidaan antaa solun nimi kirjaimella (A-F)
- do-while näyttää taulukon sisällön (etunimet) alekkain alusta alkaen annettuun kirjaimeen asti.
PHP-kieli sisältää myös goto -komennon, tosin sen käyttöä ei suositella koska se johtaa usein sekaviin kooditoteutuksiin.
Komennon break ensisijainen käyttö on keskeyttää silmukan suoritus. Kun havaitaan break-komento silmukan sisäpuolella,
silmukan ajo keskeytetään kokonaan. Komennolla break voidaan esimerkiksi keskeyttää ohjelmarakenteen suorittaminen liian
suuren numero-arvon syntyessä suorituksen aikana.
Esimerkki 11, break-komennon käytöstä. Jos numero-muuttuja on suurempi kuin 5, silmukka lopetetaan kesken.:
<div class="pun">
<?php
for ($numero = 1; $numero <= 10; $numero++) {
if ($numero > 5) break;
echo "Numero on $numero. <br>";
}
?>
<div>
Tulos www-sivulla:
Komentoa continue käytetään ohittamaan silmukan loppuosa. Komentoa käytetään kuten break- komentoa, mutta komennon
käyttö ei johda silmukan keskeyttämiseen vaan silmukan suoritusta jatketaan silmukan alusta.
Esimerkki 12. Toistamista suorittavassa for-lauseessa jokaisella kierroksella ohitetaan continue-komennolla toistolauseen
viimeinen echo:
<div class="pun">
<?php
for ($numero = 0; $numero <= 10; $numero++) {
echo "Näytetään numero $numero. <br>";
continue;
echo "Tätä ei näytetä koskaan. <br>";
}
?>
<div>
Tulos www-sivulla:
Muokkaa ylläoleva koodi siten että,
teksti "Tämä näkyy" tulostuu tekstin "Näytetään numero X" alle
kun numero on 0 - 4 sekä kun numero on 8 - 10.